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>
86 lines
2.5 KiB
YAML
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:
|