Skip to content

Commit 6ee9fd4

Browse files
committed
remove full examples; adjustments from review
1 parent d3fd3b8 commit 6ee9fd4

File tree

2 files changed

+6
-184
lines changed

2 files changed

+6
-184
lines changed

docs/admin/templates/extending-templates/advanced-dev-containers.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,21 +46,18 @@ resource "coder_devcontainer" "frontend" {
4646
count = data.coder_workspace.me.start_count
4747
agent_id = coder_agent.main.id
4848
workspace_folder = "/home/coder/frontend/${module.git_clone_frontend[0].folder_name}"
49-
depends_on = [module.git_clone_frontend]
5049
}
5150
5251
resource "coder_devcontainer" "backend" {
5352
count = data.coder_workspace.me.start_count
5453
agent_id = coder_agent.main.id
5554
workspace_folder = "/home/coder/backend/${module.git_clone_backend[0].folder_name}"
56-
depends_on = [module.git_clone_backend]
5755
}
5856
5957
resource "coder_devcontainer" "database" {
6058
count = data.coder_workspace.me.start_count
6159
agent_id = coder_agent.main.id
6260
workspace_folder = "/home/coder/database/${module.git_clone_database[0].folder_name}"
63-
depends_on = [module.git_clone_database]
6461
}
6562
```
6663

@@ -85,7 +82,6 @@ resource "coder_devcontainer" "frontend" {
8582
count = data.coder_parameter.enable_frontend.value ? data.coder_workspace.me.start_count : 0
8683
agent_id = coder_agent.main.id
8784
workspace_folder = "/home/coder/frontend/${module.git_clone_frontend[0].folder_name}"
88-
depends_on = [module.git_clone_frontend]
8985
}
9086
```
9187

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

Lines changed: 6 additions & 180 deletions
Original file line numberDiff line numberDiff line change
@@ -31,26 +31,7 @@ the Dev Container integration and the legacy Envbuilder integration.
3131

3232
- The `devcontainers-cli` module requires npm.
3333

34-
- Use an image that already includes npm, such as `codercom/enterprise-node:ubuntu`
35-
- <details><summary>If your template doesn't already include npm, install it at runtime with the `nodejs` module:</summary>
36-
37-
1. This block should be before the `devcontainers-cli` block in `main.tf`:
38-
39-
```terraform
40-
module "nodejs" {
41-
count = data.coder_workspace.me.start_count
42-
source = "dev.registry.coder.com/modules/nodejs/coder"
43-
agent_id = coder_agent.main.id
44-
}
45-
```
46-
47-
1. In the `devcontainers-cli` module block, add:
48-
49-
```terraform
50-
depends_on = [module.nodejs]
51-
```
52-
53-
</details>
34+
- You can use an image that already includes npm, such as `codercom/enterprise-node:ubuntu`.
5435

5536
## Install the Dev Containers CLI
5637

@@ -66,7 +47,7 @@ module "devcontainers-cli" {
6647
}
6748
```
6849

69-
Alternatively, install the devcontainer CLI manually in your base image:
50+
Alternatively, install `devcontainer/cli` manually in your base image:
7051

7152
```shell
7253
RUN npm install -g @devcontainers/cli
@@ -77,7 +58,7 @@ RUN npm install -g @devcontainers/cli
7758
If you don't use [`git_clone`](#clone-the-repository), point the resource at the folder that contains `devcontainer.json`:
7859

7960
```terraform
80-
resource "coder_devcontainer" "project" {
61+
resource "coder_devcontainer" "project" { # `project` in this example is how users will connect to the dev container: `ssh://project.<workspace>.me.coder`
8162
count = data.coder_workspace.me.start_count
8263
agent_id = coder_agent.main.id
8364
workspace_folder = "/home/coder/project"
@@ -88,8 +69,8 @@ resource "coder_devcontainer" "project" {
8869

8970
This step is optional, but it ensures that the project is present before the dev container starts.
9071

91-
Note that if you use the `git_clone` module, place it before the `coder_devcontainer` resource
92-
and update or replace that resource to point at `/home/coder/project/${module.git_clone[0].folder_name}` so that it is only defined once:
72+
Note that if you use the `git_clone` module, update or replace the `coder_devcontainer` resource
73+
to point to `/home/coder/project/${module.git_clone[0].folder_name}` so that it is only defined once:
9374

9475
```terraform
9576
module "git_clone" {
@@ -104,7 +85,6 @@ resource "coder_devcontainer" "project" {
10485
count = data.coder_workspace.me.start_count
10586
agent_id = coder_agent.main.id
10687
workspace_folder = "/home/coder/${module.git_clone[0].folder_name}"
107-
depends_on = [module.git_clone]
10888
}
10989
```
11090

@@ -162,165 +142,11 @@ resource "coder_devcontainer" "backend" {
162142
}
163143
```
164144

165-
## Complete Template Examples
166-
167-
You can test the Coder dev container integration and features with these starter templates.
168-
169-
<details><summary>Docker-based template (privileged)</summary>
170-
171-
This version uses a Docker-in-Docker image, so it works even if the host doesn’t expose a Docker socket.
172-
173-
```terraform
174-
terraform {
175-
required_providers {
176-
coder = {
177-
source = "coder/coder"
178-
}
179-
docker = {
180-
source = "kreuzwerker/docker"
181-
}
182-
}
183-
}
184-
185-
provider "coder" {}
186-
187-
data "coder_workspace" "me" {}
188-
data "coder_workspace_owner" "me" {}
189-
190-
resource "docker_container" "workspace" {
191-
count = data.coder_workspace.me.start_count
192-
image = "codercom/enterprise-base:ubuntu" # includes Coder agent
193-
name = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}"
194-
195-
# share host Docker
196-
volumes {
197-
host_path = "/var/run/docker.sock"
198-
container_path = "/var/run/docker.sock"
199-
}
200-
201-
must_run = true # keep container alive
202-
203-
env = [
204-
"CODER_AGENT_TOKEN=${coder_agent.main.token}",
205-
"CODER_AGENT_URL=${data.coder_workspace.me.access_url}" # lets built-in entrypoint phone home
206-
]
207-
}
208-
209-
resource "coder_agent" "main" {
210-
os = "linux"
211-
arch = "amd64"
212-
}
213-
214-
# install node
215-
module "nodejs" {
216-
count = data.coder_workspace.me.start_count
217-
source = "dev.registry.coder.com/modules/nodejs/coder"
218-
agent_id = coder_agent.main.id
219-
}
220-
221-
module "devcontainers_cli" {
222-
count = data.coder_workspace.me.start_count
223-
source = "dev.registry.coder.com/modules/devcontainers-cli/coder"
224-
agent_id = coder_agent.main.id
225-
depends_on = [module.nodejs] # npm first
226-
}
227-
228-
# clone a repo
229-
module "git_clone" {
230-
count = data.coder_workspace.me.start_count
231-
source = "dev.registry.coder.com/modules/git-clone/coder"
232-
agent_id = coder_agent.main.id
233-
url = "https://github.com/devcontainers/template-starter.git"
234-
base_dir = "/home/coder/project"
235-
}
236-
237-
# launch the Dev Container
238-
resource "coder_devcontainer" "project" {
239-
count = data.coder_workspace.me.start_count
240-
agent_id = coder_agent.main.id
241-
workspace_folder = "/home/coder/project/${module.git_clone[0].folder_name}"
242-
depends_on = [module.git_clone]
243-
}
244-
```
245-
246-
</details>
247-
248-
<details><summary>Kubernetes-based template (Sysbox runtime)</summary>
249-
250-
```terraform
251-
terraform {
252-
required_providers {
253-
coder = { source = "coder/coder" }
254-
kubernetes = { source = "hashicorp/kubernetes" }
255-
}
256-
}
257-
258-
data "coder_workspace" "me" {}
259-
data "coder_workspace_owner" "me" {}
260-
261-
resource "coder_agent" "main" {
262-
os = "linux"
263-
arch = "amd64"
264-
265-
startup_script_behavior = "blocking"
266-
startup_script = "sudo service docker start"
267-
}
268-
269-
module "devcontainers_cli" {
270-
count = data.coder_workspace.me.start_count
271-
source = "dev.registry.coder.com/modules/devcontainers-cli/coder"
272-
agent_id = coder_agent.main.id
273-
}
274-
275-
module "git_clone" {
276-
count = data.coder_workspace.me.start_count
277-
source = "dev.registry.coder.com/modules/git-clone/coder"
278-
agent_id = coder_agent.main.id
279-
url = "https://github.com/coder/coder.git"
280-
base_dir = "/home/coder/project"
281-
}
282-
283-
resource "coder_devcontainer" "project" {
284-
count = data.coder_workspace.me.start_count
285-
agent_id = coder_agent.main.id
286-
workspace_folder = "/home/coder/project/${module.git_clone[0].folder_name}"
287-
depends_on = [module.git_clone]
288-
}
289-
290-
resource "kubernetes_pod" "workspace" {
291-
count = data.coder_workspace.me.start_count
292-
293-
metadata {
294-
name = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}"
295-
namespace = "coder-workspaces"
296-
}
297-
298-
spec {
299-
container {
300-
name = "main"
301-
image = "codercom/enterprise-base:ubuntu"
302-
303-
security_context { privileged = true } # or use Sysbox / rootless
304-
env { name = "CODER_AGENT_TOKEN" value = coder_agent.main.token }
305-
}
306-
}
307-
}
308-
```
309-
310-
</details>
311-
312145
## Troubleshoot Common Issues
313146

314147
### Disable dev containers integration
315148

316-
To disable the dev containers integration in your workspace, add the `CODER_AGENT_DEVCONTAINERS_ENABLE` environment variable to your existing `coder_agent` block:
317-
318-
```terraform
319-
env = {
320-
CODER_AGENT_DEVCONTAINERS_ENABLE = "false"
321-
# existing variables ...
322-
}
323-
```
149+
To disable the dev containers integration in your workspace, set the `CODER_AGENT_DEVCONTAINERS_ENABLE= "false"` environment variable.
324150

325151
### Dev container does not start
326152

0 commit comments

Comments
 (0)