services: postgres: image: postgres:16-alpine environment: POSTGRES_USER: arcade POSTGRES_PASSWORD: arcade_dev POSTGRES_DB: arcade ports: ["5432:5432"] volumes: - pgdata:/var/lib/postgresql/data - ./migrations:/docker-entrypoint-initdb.d:ro healthcheck: test: ["CMD-SHELL", "pg_isready -U arcade"] interval: 2s timeout: 3s retries: 20 redis: image: redis:7-alpine ports: ["6379:6379"] volumes: - redisdata:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 2s timeout: 3s retries: 20 arcade: build: . environment: ARCADE_DSN: postgres://arcade:arcade_dev@postgres:5432/arcade ARCADE_ADDR: ":8080" # Development funding. Leave unset in any real deployment. ARCADE_DEV_FAUCET: "${ARCADE_DEV_FAUCET:-0}" ports: ["8080:8080"] depends_on: postgres: { condition: service_healthy } redis: { condition: service_healthy } restart: unless-stopped volumes: pgdata: redisdata: