version: '3.8' services: postgres: image: postgres:16 container_name: dumpster-postgres environment: POSTGRES_USER: ${POSTGRES_USER:-dumpster} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-dumpster} POSTGRES_DB: ${POSTGRES_DB:-dumpster} volumes: - postgres_data:/var/lib/postgresql/data ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] interval: 5s timeout: 5s retries: 5 valkey: image: valkey/valkey:8 container_name: dumpster-valkey volumes: - valkey_data:/data ports: - "6379:6379" healthcheck: test: ["CMD", "valkey-cli", "ping"] interval: 5s timeout: 3s retries: 5 minio: image: minio/minio:latest container_name: dumpster-minio command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: ${MINIO_ACCESS_KEY:-dumpster} MINIO_ROOT_PASSWORD: ${MINIO_SECRET_KEY:-dumpster-secret} volumes: - minio_data:/data ports: - "9000:9000" - "9001:9001" livekit: image: livekit/livekit-server:latest container_name: dumpster-livekit command: > --config /etc/livekit.yaml ports: - "7880:7880" - "7881:7881" - "7882:7882/udp" - "50000-50100:50000-50100/udp" volumes: - ./livekit.yaml:/etc/livekit.yaml:ro environment: LIVEKIT_KEYS: "${LIVEKIT_API_KEY}:${LIVEKIT_API_SECRET}" depends_on: - coturn coturn: image: coturn/coturn:latest container_name: dumpster-coturn command: > -n --log-file=stdout --external-ip=$$(detect-external-ip) --min-port=10000 --max-port=20000 --realm=${DUMPSTER_HOST:-localhost} --user=${LIVEKIT_API_KEY}:${LIVEKIT_API_SECRET} ports: - "3478:3478/tcp" - "3478:3478/udp" - "5349:5349/tcp" - "5349:5349/udp" - "10000-20000:10000-20000/udp" caddy: image: caddy:2 container_name: dumpster-caddy ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - caddy_data:/data - caddy_config:/config depends_on: - app volumes: postgres_data: valkey_data: minio_data: caddy_data: caddy_config: