services: # ================= PostgreSQL ================= db: image: postgres:latest environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: password POSTGRES_DB: stackframe POSTGRES_DELAY_MS: ${POSTGRES_DELAY_MS:-0} ports: - 5432:5432 volumes: - postgres-data:/var/lib/postgresql/data entrypoint: ["sh", "-c", " if [ $POSTGRES_DELAY_MS -gt 0 ]; then apt-get update && apt-get install -y iproute2 && \ tc qdisc add dev eth0 root netem delay ${POSTGRES_DELAY_MS}ms; fi; exec docker-entrypoint.sh postgres"] cap_add: - NET_ADMIN # ================= Inbucket ================= inbucket: image: inbucket/inbucket:latest ports: - 2500:2500 - 8105:9000 - 1100:1100 volumes: - inbucket-data:/data # ================= OpenTelemetry & Jaeger ================= jaeger: image: jaegertracing/all-in-one:latest environment: - COLLECTOR_OTLP_ENABLED=true ports: - 8107:16686 # Jaeger UI - 4318:4318 # OTLP Endpoint restart: always # ================= svix ================= svix-db: image: postgres:latest environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: password POSTGRES_DB: svix volumes: - svix-postgres-data:/var/lib/postgresql/data svix-redis: image: docker.io/redis:7-alpine command: --save 60 500 --appendonly yes --appendfsync everysec volumes: - svix-redis-data:/data svix-server: image: svix/svix-server environment: WAIT_FOR: 'true' SVIX_REDIS_DSN: redis://svix-redis:6379 SVIX_DB_DSN: postgres://postgres:password@svix-db:5432/svix SVIX_CACHE_TYPE: memory SVIX_JWT_SECRET: secret SVIX_LOG_LEVEL: trace SVIX_QUEUE_TYPE: redis ports: - 8113:8071 depends_on: - svix-redis - svix-db # ================= volumes ================= volumes: postgres-data: inbucket-data: svix-redis-data: svix-postgres-data: