terraform { required_providers { coder = { source = "coder/coder" version = "0.5.3" } docker = { source = "kreuzwerker/docker" version = "~> 2.20.0" } } } # Admin parameters provider "docker" { host = "unix:///var/run/dogfood-docker.sock" } provider "coder" { } data "coder_workspace" "me" { } resource "coder_agent" "dev" { arch = "amd64" os = "linux" startup_script = <&1 | tee ~/.personalize.log; fi EOF } resource "coder_app" "code-server" { agent_id = coder_agent.dev.id name = "code-server" url = "http://localhost:13337/" icon = "/icon/code.svg" subdomain = false share = "owner" healthcheck { url = "http://localhost:13337/healthz" interval = 3 threshold = 10 } } resource "docker_volume" "home_volume" { name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}-home" } resource "coder_metadata" "home_info" { resource_id = docker_volume.home_volume.id item { key = "🤫🤫🤫

" value = "❤️❤️❤️" sensitive = true } } data "docker_registry_image" "dogfood" { name = "codercom/oss-dogfood:main" } locals { container_name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}" } resource "docker_image" "dogfood" { name = data.docker_registry_image.dogfood.name pull_triggers = [data.docker_registry_image.dogfood.sha256_digest] keep_locally = true } resource "docker_container" "workspace" { count = data.coder_workspace.me.start_count image = docker_image.dogfood.name # Uses lower() to avoid Docker restriction on container names. name = local.container_name # Hostname makes the shell more user friendly: coder@my-workspace:~$ hostname = lower(data.coder_workspace.me.name) dns = ["1.1.1.1"] # Use the docker gateway if the access URL is 127.0.0.1 command = [ "sh", "-c", <