Files
coder/dev-rust/container.tf
T

73 lines
1.8 KiB
Terraform

resource "docker_image" "workspace" {
name = "coder-${data.coder_workspace.me.id}"
build {
context = "."
dockerfile = "Dockerfile"
}
keep_locally = true
}
resource "docker_container" "workspace" {
count = data.coder_workspace.me.start_count
image = docker_image.workspace.name
name = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}"
hostname = data.coder_workspace.me.name
entrypoint = [
"sh", "-c",
<<EOT
sudo chown -R coder:coder /home/coder
for group_id in $(id -G); do
getent group "$group_id" >/dev/null 2>&1 || sudo groupadd --gid "$group_id" "host-$group_id" || true
done
${replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal")}
EOT
]
gpus = data.coder_parameter.gpu.value == "all" ? "all" : "device=${data.coder_parameter.gpu.value}"
group_add = [var.docker_group_id]
env = [
"CODER_AGENT_TOKEN=${coder_agent.main.token}",
"NVIDIA_VISIBLE_DEVICES=${data.coder_parameter.gpu.value}",
"NVIDIA_DRIVER_CAPABILITIES=all",
"OLLAMA_HOST=${local.ollama_host}"
]
host {
host = "host.docker.internal"
ip = "host-gateway"
}
volumes {
container_path = "/home/coder"
host_path = local.workspace_home
read_only = false
}
volumes {
container_path = "/var/run/docker.sock"
host_path = "/var/run/docker.sock"
read_only = false
}
labels {
label = "coder.owner"
value = data.coder_workspace_owner.me.name
}
labels {
label = "coder.owner_id"
value = data.coder_workspace_owner.me.id
}
labels {
label = "coder.workspace_id"
value = data.coder_workspace.me.id
}
labels {
label = "coder.workspace_name"
value = data.coder_workspace.me.name
}
}