Files
crewli/docker-compose.glitchtip.yml
bert.hausmans fc5a2a9156 feat: glitchtip docker stack + local dev integration
WS-7 PR-1 — bring up self-hosted GlitchTip alongside the existing
dev stack. One compose file is portable to the production monitoring
host (RFC-WS-7 §3.1).

- docker-compose.glitchtip.yml: web/worker/postgres/redis pinned, web
  bound to 127.0.0.1:8200, internal network for postgres + valkey.
- docker/glitchtip/.env.example: documented dev defaults + production
  checklist; .env itself ignored.
- Makefile: services / services-stop merge both compose files; new
  services-glitchtip-status tail target.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 08:12:31 +02:00

86 lines
2.5 KiB
YAML

# GlitchTip — self-hosted error tracking (Sentry-protocol compatible).
#
# This file is portable: it runs standalone on the production monitoring
# host AND merges into the local Crewli dev stack via:
#
# docker compose -f docker-compose.yml -f docker-compose.glitchtip.yml up -d
#
# `make services` encapsulates the merge for local development.
#
# All configuration comes from docker/glitchtip/.env via env_file. Copy
# docker/glitchtip/.env.example to docker/glitchtip/.env on first run.
#
# Per RFC-WS-7-OBSERVABILITY §3.1. See dev-docs/GLITCHTIP.md for the
# operations runbook (boot, project provisioning, DSN handling, backup,
# restore).
services:
glitchtip-postgres:
image: postgres:16-alpine
container_name: glitchtip-postgres
env_file:
- ./docker/glitchtip/.env
volumes:
- glitchtip_postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d glitchtip"]
interval: 5s
timeout: 5s
retries: 10
restart: unless-stopped
glitchtip-redis:
image: valkey/valkey:7-alpine
container_name: glitchtip-redis
volumes:
- glitchtip_redis_data:/data
healthcheck:
test: ["CMD", "valkey-cli", "ping"]
interval: 5s
timeout: 5s
retries: 10
restart: unless-stopped
glitchtip-web:
image: glitchtip/glitchtip:6.1.6
container_name: glitchtip-web
depends_on:
glitchtip-postgres:
condition: service_healthy
glitchtip-redis:
condition: service_healthy
env_file:
- ./docker/glitchtip/.env
command: ["sh", "-c", "./bin/run-migrate.sh && ./bin/run-web.sh"]
ports:
- "127.0.0.1:8200:8000"
volumes:
- glitchtip_uploads:/code/uploads
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://localhost:8000/api/0/', timeout=4).status==200 else 1)"]
interval: 10s
timeout: 5s
retries: 6
start_period: 60s
restart: unless-stopped
glitchtip-worker:
image: glitchtip/glitchtip:6.1.6
container_name: glitchtip-worker
command: ./bin/run-celery-with-beat.sh
depends_on:
glitchtip-postgres:
condition: service_healthy
glitchtip-redis:
condition: service_healthy
env_file:
- ./docker/glitchtip/.env
volumes:
- glitchtip_uploads:/code/uploads
restart: unless-stopped
volumes:
glitchtip_postgres_data:
glitchtip_redis_data:
glitchtip_uploads: