73 lines
1.8 KiB
Terraform
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
|
|
}
|
|
}
|