7a34c1102b
* self-hosting stuff goes in /hosting * add v4 tags * add main compose file * draft overview * add webapp env vars * overview tweaks * add supervisor env vars * move old docker guide * new sidebar structure * update github actions docs * docker draft * use env vars for s3 creds * this might just work * split into multiple files * update guide * document machine overrides * split legacy docs into different section * some fixes * some tweaks * add login and init instructions * don't cursorignore .env.example
75 lines
2.3 KiB
YAML
75 lines
2.3 KiB
YAML
name: trigger
|
|
|
|
services:
|
|
supervisor:
|
|
image: ghcr.io/triggerdotdev/supervisor:${SUPERVISOR_IMAGE_TAG:-v4-beta}
|
|
restart: ${RESTART_POLICY:-unless-stopped}
|
|
depends_on:
|
|
- docker-proxy
|
|
networks:
|
|
- supervisor
|
|
- docker-proxy
|
|
volumes:
|
|
- shared:/home/node/shared
|
|
# Only needed for bootstrap
|
|
user: root
|
|
# Only needed for bootstrap
|
|
command: sh -c "chown -R node:node /home/node/shared && exec /usr/bin/dumb-init -- pnpm run --filter supervisor start"
|
|
environment:
|
|
# This needs to match the token of the worker group you want to connect to
|
|
# TRIGGER_WORKER_TOKEN: ${TRIGGER_WORKER_TOKEN}
|
|
TRIGGER_WORKER_TOKEN: file:///home/node/shared/worker_token
|
|
MANAGED_WORKER_SECRET: ${MANAGED_WORKER_SECRET}
|
|
# Point this at the webapp in prod
|
|
TRIGGER_API_URL: http://webapp:3000
|
|
# Point this at the OTel collector or the webapp in prod
|
|
OTEL_EXPORTER_OTLP_ENDPOINT: http://webapp:3000/otel
|
|
TRIGGER_WORKLOAD_API_DOMAIN: supervisor
|
|
TRIGGER_WORKLOAD_API_PORT_EXTERNAL: 8020
|
|
# Optional settings
|
|
DEBUG: 1
|
|
ENFORCE_MACHINE_PRESETS: 1
|
|
TRIGGER_DEQUEUE_INTERVAL_MS: 1000
|
|
DOCKER_HOST: tcp://docker-proxy:2375
|
|
DOCKER_RUNNER_NETWORKS: webapp,supervisor
|
|
DOCKER_REGISTRY_URL: ${DOCKER_REGISTRY_URL:-localhost:5000}
|
|
DOCKER_REGISTRY_USERNAME: ${DOCKER_REGISTRY_USERNAME:-}
|
|
DOCKER_REGISTRY_PASSWORD: ${DOCKER_REGISTRY_PASSWORD:-}
|
|
DOCKER_AUTOREMOVE_EXITED_CONTAINERS: 0
|
|
healthcheck:
|
|
test: ["CMD", "node", "-e", "http.get('http://localhost:8020/health', res => process.exit(res.statusCode === 200 ? 0 : 1)).on('error', () => process.exit(1))"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 5
|
|
start_period: 10s
|
|
|
|
docker-proxy:
|
|
image: tecnativa/docker-socket-proxy:${DOCKER_PROXY_IMAGE_TAG:-latest}
|
|
restart: ${RESTART_POLICY:-unless-stopped}
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
networks:
|
|
- docker-proxy
|
|
environment:
|
|
- LOG_LEVEL=info
|
|
- POST=1
|
|
- CONTAINERS=1
|
|
- IMAGES=1
|
|
- INFO=1
|
|
- NETWORKS=1
|
|
healthcheck:
|
|
test: ["CMD", "nc", "-z", "127.0.0.1", "2375"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 5s
|
|
|
|
volumes:
|
|
shared:
|
|
|
|
networks:
|
|
docker-proxy:
|
|
name: docker-proxy
|
|
supervisor:
|
|
name: supervisor
|