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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy