services: coder: user: root group_add: - 988 image: 'ghcr.io/coder/coder:${CODER_VERSION:-latest}' expose: - '7080' environment: CODER_PG_CONNECTION_URL: 'postgresql://${POSTGRES_USER:-username}:${POSTGRES_PASSWORD:-password}@database/${POSTGRES_DB:-coder}?sslmode=disable' CODER_HTTP_ADDRESS: '0.0.0.0:7080' CODER_ACCESS_URL: '${CODER_ACCESS_URL}' CODER_WILDCARD_ACCESS_URL: '${CODER_WILDCARD_ACCESS_URL}' CODER_HTTP_ADDRESS: '${CODER_HTTP_ADDRESS}' GITEA_HOST: '${GITEA_HOST}' GITEA_PAT: '${GITEA_PAT}' GITHUB_PAT: '${GITHUB_PAT}' volumes: - '/home/trav/.gitconfig:/home/coder/.gitconfig' - '/home/trav/.git-credentials:/home/coder/.git-credentials' - '/home/trav/.ssh:/home/coder/.ssh' - '/home/trav/.zshrc:/home/coder/.zshrc' - '/home/trav/.oh-my-zsh:/home/coder/.oh-my-zsh' - '/home/trav/.zsh_history:/home/coder/.zsh_history' - '/home/trav/.p10k.zsh:/home/coder/.p10k.zsh' - '/home/trav/.claude:/home/coder/.claude' - '/home/trav/.codex:/home/coder/.codex' - '/home/trav/.1password:/home/coder/.1password' - '/home/trav/.config:/home/coder/.config' - '/home/trav/:/home/coder/' - '/home/trav/.local/:/home/coder/.local' - '/home/trav/.cache:/home/coder/.cache' - '/home/trav/.docker/config.json:/home/coder/.docker/config.json' - '/home/trav/code-tools:/home/coder/code-tools' - '/home/trav/claude-scripts:/home/coder/claude-scripts' - '/var/run/docker.sock:/var/run/docker.sock' - 'coder_home:/home/coder' depends_on: database: condition: service_healthy healthcheck: test: - CMD-SHELL - 'curl -f -s http://localhost:7080/healthz || exit 1' interval: 30s timeout: 10s retries: 3 start_period: 60s labels: - glance.name=Coder - 'glance.icon=https://cdn.jsdelivr.net/gh/selfhst/icons/webp/coder.webp' - 'glance.url=http://dev.lab' - 'glance.description=Mad Science Lab' - glance.id=coder - glance.category=dev - glance.hide=false database: image: 'postgres:17' environment: POSTGRES_USER: '${POSTGRES_USER:-username}' POSTGRES_PASSWORD: '${POSTGRES_PASSWORD:-password}' POSTGRES_DB: '${POSTGRES_DB:-coder}' volumes: - 'coder_data:/var/lib/postgresql/data' healthcheck: test: - CMD-SHELL - 'pg_isready -U ${POSTGRES_USER:-username} -d ${POSTGRES_DB:-coder}' interval: 5s timeout: 5s retries: 5 labels: - glance.name=Postgres-Coder - glance.parent=coder - glance.hide=false volumes: coder_data: null coder_home: null