services: gateway: build: . container_name: gravity-gateway restart: unless-stopped # Port NOT exposed directly — Caddy handles external access expose: - "8585" environment: - DISCORD_TOKEN=${DISCORD_TOKEN} - DISCORD_GUILD_ID=${DISCORD_GUILD_ID} - BOT_MODE=gateway - GATEWAY_PORT=8585 - GATEWAY_API_KEY=${GATEWAY_API_KEY} - BRAIN_PATH=/app/data/brain volumes: - gateway-data:/app/data logging: driver: json-file options: max-size: "10m" max-file: "3" caddy: image: caddy:2-alpine container_name: gravity-caddy restart: unless-stopped ports: - "443:443" - "80:80" volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - caddy-data:/data - caddy-config:/config depends_on: - gateway volumes: gateway-data: caddy-data: caddy-config: