@@ -338,135 +338,6 @@ resource "docker_container" "workspace" {
338
338
}
339
339
```
340
340
341
- <details >
342
- <summary >Expand for the full `main.tf` file</summary >
343
- ``` tf
344
- terraform {
345
- required_providers {
346
- coder = {
347
- source = "coder/coder"
348
- }
349
- docker = {
350
- source = "kreuzwerker/docker"
351
- }
352
- }
353
- }
354
-
355
- locals {
356
- username = data.coder_workspace_owner.me.name
357
- }
358
-
359
- data "coder_provisioner" "me" {
360
- }
361
-
362
- provider "docker" {
363
- }
364
-
365
- provider "coder" {
366
- }
367
-
368
- data "coder_workspace" "me" {
369
- }
370
-
371
- data "coder_workspace_owner" "me" {}
372
-
373
- resource "coder_agent" "main" {
374
- arch = data.coder_provisioner.me.arch
375
- os = "linux"
376
- startup_script = <<-EOT
377
- set -e
378
-
379
- # install and start code-server
380
- curl -fsSL https://code-server.dev/install.sh | sh -s -- --method=standalone --prefix=/tmp/code-server
381
- /tmp/code-server/bin/code-server --auth none --port 13337 >/tmp/code-server.log 2>&1 &
382
- EOT
383
-
384
- env = {
385
- GIT_AUTHOR_NAME = coalesce(data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name)
386
- GIT_AUTHOR_EMAIL = "${data.coder_workspace_owner.me.email}"
387
- GIT_COMMITTER_NAME = coalesce(data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name)
388
- GIT_COMMITTER_EMAIL = "${data.coder_workspace_owner.me.email}"
389
- }
390
-
391
- metadata {
392
- display_name = "CPU Usage"
393
- key = "0_cpu_usage"
394
- script = "coder stat cpu"
395
- interval = 10
396
- timeout = 1
397
- }
398
-
399
- metadata {
400
- display_name = "RAM Usage"
401
- key = "1_ram_usage"
402
- script = "coder stat mem"
403
- interval = 10
404
- timeout = 1
405
- }
406
- }
407
-
408
- resource "coder_app" "code-server" {
409
- agent_id = coder_agent.main.id
410
- slug = "code-server"
411
- display_name = "code-server"
412
- url = "http://localhost:13337/?folder=/home/${local.username}"
413
- icon = "/icon/code.svg"
414
- subdomain = false
415
- share = "owner"
416
-
417
- healthcheck {
418
- url = "http://localhost:13337/healthz"
419
- interval = 5
420
- threshold = 6
421
- }
422
- }
423
-
424
- resource "docker_volume" "home_volume" {
425
- name = "coder-${data.coder_workspace.me.id}-home"
426
- # Protect the volume from being deleted due to changes in attributes.
427
- lifecycle {
428
- ignore_changes = all
429
- }
430
- }
431
-
432
- resource "docker_image" "main" {
433
- name = "coder-${data.coder_workspace.me.id}"
434
- build {
435
- context = "./build"
436
- build_args = {
437
- USER = local.username
438
- }
439
- }
440
- triggers = {
441
- dir_sha1 = sha1(join("", [for f in fileset(path.module, "build/*") : filesha1(f)]))
442
- }
443
- }
444
-
445
- resource "docker_container" "workspace" {
446
- count = data.coder_workspace.me.start_count
447
- image = docker_image.main.name
448
- # Uses lower() to avoid Docker restriction on container names.
449
- name = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}"
450
- # Hostname makes the shell more user friendly: coder@my-workspace:~$
451
- hostname = data.coder_workspace.me.name
452
- # Use the docker gateway if the access URL is 127.0.0.1
453
- entrypoint = ["sh", "-c", replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal")]
454
- env = [
455
- "CODER_AGENT_TOKEN=${coder_agent.main.token}",
456
- ]
457
- host {
458
- host = "host.docker.internal"
459
- ip = "host-gateway"
460
- }
461
- volumes {
462
- container_path = "/home/${local.username}"
463
- volume_name = docker_volume.home_volume.name
464
- read_only = false
465
- }
466
- }
467
- ```
468
- </details >
469
-
470
341
## 7. Create the template in Coder
471
342
472
343
Save ` main.tf ` and exit the editor.
0 commit comments