Skip to content

Commit 9f5b598

Browse files
committed
Support Docker inside Coder container.
1 parent d2bb3ff commit 9f5b598

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,3 @@ tags: [docker, container, laravel, php]
1616
- [ ] Fix PHPMyAdmin work.
1717
- [ ] Download and unzip archive instead git clone for some repositories.
1818
- [ ] Postgresql support
19-
- [ ] Support Docker inside Coder container

main.tf

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,20 @@ resource "docker_image" "main" {
265265
}
266266
}
267267

268+
resource "docker_network" "private_network" {
269+
name = "network-${data.coder_workspace.me.id}"
270+
}
271+
272+
resource "docker_container" "dind" {
273+
image = "docker:dind"
274+
privileged = true
275+
name = "dind-${data.coder_workspace.me.id}"
276+
entrypoint = ["dockerd", "-H", "tcp://0.0.0.0:2375"]
277+
networks_advanced {
278+
name = docker_network.private_network.name
279+
}
280+
}
281+
268282
resource "docker_container" "workspace" {
269283
count = data.coder_workspace.me.start_count
270284

@@ -276,6 +290,8 @@ resource "docker_container" "workspace" {
276290
# Hostname makes the shell more user friendly: coder@my-workspace:~$
277291
hostname = data.coder_workspace.me.name
278292

293+
command = ["sh", "-c", coder_agent.main.init_script]
294+
279295
# Use the docker gateway if the access URL is 127.0.0.1
280296
entrypoint = ["sh", "-c", replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal")]
281297

@@ -285,14 +301,19 @@ resource "docker_container" "workspace" {
285301
"INIT_SCRIPT=${replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal")}",
286302
"GIT_URL=${data.coder_parameter.repo.value == "custom" ? data.coder_parameter.custom_repo_url.value : data.coder_parameter.repo.value}",
287303
"WORKDIR=/var/www/html",
288-
"SEED=${data.coder_parameter.laravel_seed.value}"
304+
"SEED=${data.coder_parameter.laravel_seed.value}",
305+
"DOCKER_HOST=${docker_container.dind.name}:2375"
289306
]
290307

291308
host {
292309
host = "host.docker.internal"
293310
ip = "host-gateway"
294311
}
295312

313+
networks_advanced {
314+
name = docker_network.private_network.name
315+
}
316+
296317
volumes {
297318
container_path = "/var/www/html"
298319
volume_name = docker_volume.workspaces.name

0 commit comments

Comments
 (0)