adding a simple docker service template for coder
This commit is contained in:
parent
51fc36eea3
commit
387b12e541
140
docker-stack/coder/docker-service-simple/main.tf
Normal file
140
docker-stack/coder/docker-service-simple/main.tf
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
terraform {
|
||||||
|
required_providers {
|
||||||
|
coder = {
|
||||||
|
source = "coder/coder"
|
||||||
|
version = "0.5.3"
|
||||||
|
}
|
||||||
|
docker = {
|
||||||
|
source = "kreuzwerker/docker"
|
||||||
|
version = "~> 2.20.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data "coder_provisioner" "me" {
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "docker" {
|
||||||
|
}
|
||||||
|
|
||||||
|
data "coder_workspace" "me" {
|
||||||
|
}
|
||||||
|
|
||||||
|
locals {
|
||||||
|
workspace_name = "${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}"
|
||||||
|
|
||||||
|
## this points to the workspace parent directory accessible from the docker host.
|
||||||
|
workspace_dir = "/home/gfs-data/coder/workspace/${local.workspace_name}"
|
||||||
|
|
||||||
|
## this indicates the view of workspace_dir from within the coder server container.
|
||||||
|
## the binding mount directory in coder.yml must match the leading directory in this item.
|
||||||
|
server_workspace_dir = "/workspace/${local.workspace_name}"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "null_resource" "workspace" {
|
||||||
|
|
||||||
|
triggers = {
|
||||||
|
dir = local.server_workspace_dir
|
||||||
|
}
|
||||||
|
|
||||||
|
provisioner "local-exec" {
|
||||||
|
command = "mkdir ${self.triggers.dir}"
|
||||||
|
}
|
||||||
|
|
||||||
|
provisioner "local-exec" {
|
||||||
|
when = destroy
|
||||||
|
command = "rm -rf ${self.triggers.dir}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "coder_agent" "main" {
|
||||||
|
arch = data.coder_provisioner.me.arch
|
||||||
|
os = "linux"
|
||||||
|
startup_script = "code-server --auth none"
|
||||||
|
|
||||||
|
# These environment variables allow you to make Git commits right away after creating a
|
||||||
|
# workspace. Note that they take precedence over configuration defined in ~/.gitconfig!
|
||||||
|
# You can remove this block if you'd prefer to configure Git manually or using
|
||||||
|
# dotfiles. (see docs/dotfiles.md)
|
||||||
|
env = {
|
||||||
|
GIT_AUTHOR_NAME = "${data.coder_workspace.me.owner}"
|
||||||
|
GIT_COMMITTER_NAME = "${data.coder_workspace.me.owner}"
|
||||||
|
GIT_AUTHOR_EMAIL = "${data.coder_workspace.me.owner_email}"
|
||||||
|
GIT_COMMITTER_EMAIL = "${data.coder_workspace.me.owner_email}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "coder_app" "code-server" {
|
||||||
|
agent_id = coder_agent.main.id
|
||||||
|
name = "code-server"
|
||||||
|
url = "http://localhost:8080/?folder=/home/coder"
|
||||||
|
icon = "/icon/code.svg"
|
||||||
|
subdomain = false
|
||||||
|
share = "owner"
|
||||||
|
|
||||||
|
healthcheck {
|
||||||
|
url = "http://localhost:8080/healthz"
|
||||||
|
interval = 3
|
||||||
|
threshold = 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
##resource "docker_volume" "home_volume" {
|
||||||
|
## name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}-root"
|
||||||
|
##}
|
||||||
|
|
||||||
|
resource "docker_service" "workspace" {
|
||||||
|
##depends_on = [local_file.workspace]
|
||||||
|
depends_on = [null_resource.workspace]
|
||||||
|
|
||||||
|
##count = data.coder_workspace.me.start_count
|
||||||
|
name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}"
|
||||||
|
|
||||||
|
task_spec {
|
||||||
|
container_spec {
|
||||||
|
image = "codercom/code-server:latest"
|
||||||
|
hostname = lower(data.coder_workspace.me.name)
|
||||||
|
command = ["sh"]
|
||||||
|
##args = ["-c", replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal")]
|
||||||
|
args = ["-c", replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "coder-service-host") ]
|
||||||
|
|
||||||
|
env = {
|
||||||
|
CODER_AGENT_TOKEN = "${coder_agent.main.token}"
|
||||||
|
}
|
||||||
|
#hosts {
|
||||||
|
# host = "host.docker.internal"
|
||||||
|
# ip = "host-gateway"
|
||||||
|
#}
|
||||||
|
|
||||||
|
mounts {
|
||||||
|
target = "/home/coder"
|
||||||
|
source = local.workspace_dir
|
||||||
|
type = "bind"
|
||||||
|
read_only = false
|
||||||
|
}
|
||||||
|
|
||||||
|
##dir = "/home/coder"
|
||||||
|
##user = "root"
|
||||||
|
}
|
||||||
|
|
||||||
|
resources {
|
||||||
|
limits {
|
||||||
|
memory_bytes = 1000000000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#placement {
|
||||||
|
# constraints = [
|
||||||
|
# "node.role == manager"
|
||||||
|
# ]
|
||||||
|
#}
|
||||||
|
|
||||||
|
force_update = 0
|
||||||
|
networks = ["coder-network"]
|
||||||
|
}
|
||||||
|
|
||||||
|
mode {
|
||||||
|
replicated {
|
||||||
|
replicas = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user