Skip to content

Commit cfcef3c

Browse files
committed
update example template
1 parent 03c60bf commit cfcef3c

File tree

1 file changed

+46
-20
lines changed

1 file changed

+46
-20
lines changed

docs/admin/templates/extending-templates/devcontainers.md

Lines changed: 46 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -167,53 +167,79 @@ You can test the Coder dev container integration and features with these starter
167167

168168
<details><summary>Docker-based template (privileged)</summary>
169169

170+
This version uses a Docker-in-Docker image, so it works even if the host doesn’t expose a Docker socket.
171+
170172
```terraform
171173
terraform {
172174
required_providers {
173-
coder = { source = "coder/coder" }
174-
docker = { source = "kreuzwerker/docker" }
175+
coder = {
176+
source = "coder/coder"
177+
}
178+
docker = {
179+
source = "kreuzwerker/docker"
180+
}
175181
}
176182
}
177183
178-
data "coder_workspace" "me" {}
179-
data "coder_workspace_owner" "me" {}
184+
provider "coder" {}
185+
186+
data "coder_workspace" "me" {}
187+
data "coder_workspace_owner" "me" {}
188+
189+
resource "docker_container" "workspace" {
190+
count = data.coder_workspace.me.start_count
191+
image = "codercom/enterprise-base:ubuntu" # includes Coder agent
192+
name = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}"
193+
194+
# share host Docker
195+
volumes {
196+
host_path = "/var/run/docker.sock"
197+
container_path = "/var/run/docker.sock"
198+
}
199+
200+
must_run = true # keep container alive
201+
202+
env = [
203+
"CODER_AGENT_TOKEN=${coder_agent.main.token}",
204+
"CODER_AGENT_URL=${data.coder_workspace.me.access_url}" # lets built-in entrypoint phone home
205+
]
206+
}
180207
181208
resource "coder_agent" "main" {
182209
os = "linux"
183210
arch = "amd64"
184-
185-
startup_script_behavior = "blocking"
186-
startup_script = "sudo service docker start"
187-
shutdown_script = "sudo service docker stop"
188211
}
189212
190-
module "devcontainers_cli" {
213+
# install node
214+
module "nodejs" {
191215
count = data.coder_workspace.me.start_count
192-
source = "dev.registry.coder.com/modules/devcontainers-cli/coder"
216+
source = "dev.registry.coder.com/modules/nodejs/coder"
193217
agent_id = coder_agent.main.id
194218
}
195219
220+
module "devcontainers_cli" {
221+
count = data.coder_workspace.me.start_count
222+
source = "dev.registry.coder.com/modules/devcontainers-cli/coder"
223+
agent_id = coder_agent.main.id
224+
depends_on = [module.nodejs] # npm first
225+
}
226+
227+
# clone a repo
196228
module "git_clone" {
197229
count = data.coder_workspace.me.start_count
198230
source = "dev.registry.coder.com/modules/git-clone/coder"
199231
agent_id = coder_agent.main.id
200-
url = "https://github.com/example/project.git"
201-
base_dir = "/home/coder/project"
232+
url = "https://github.com/devcontainers/template-starter.git"
233+
base_dir = "/home/coder/project"
202234
}
203235
236+
# launch the Dev Container
204237
resource "coder_devcontainer" "project" {
205238
count = data.coder_workspace.me.start_count
206239
agent_id = coder_agent.main.id
207240
workspace_folder = "/home/coder/project/${module.git_clone[0].folder_name}"
208241
depends_on = [module.git_clone]
209242
}
210-
211-
resource "docker_container" "workspace" {
212-
count = data.coder_workspace.me.start_count
213-
image = "codercom/enterprise-node:ubuntu"
214-
name = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}"
215-
privileged = true # or mount /var/run/docker.sock
216-
}
217243
```
218244

219245
</details>
@@ -249,7 +275,7 @@ module "git_clone" {
249275
count = data.coder_workspace.me.start_count
250276
source = "dev.registry.coder.com/modules/git-clone/coder"
251277
agent_id = coder_agent.main.id
252-
url = "https://github.com/example/project.git"
278+
url = "https://github.com/coder/coder.git"
253279
base_dir = "/home/coder/project"
254280
}
255281

0 commit comments

Comments
 (0)