include: - compose.yml # Production compose file - extends base compose.yml # Usage: docker compose -f compose.production.yml up -d networks: compose_network: external: true name: compose_network services: # Override Awesome App for production awesome-app: networks: - compose_network ports: [] # Remove exposed ports, use Traefik instead # Override environment for production settings environment: NODE_ENV: production NEXT_TELEMETRY_DISABLED: 1 # Database path (production) AWESOME_DB_PATH: ${AWESOME_DB_PATH:-/app/awesome.db} # Webhook secret (required for production updates) WEBHOOK_SECRET: ${AWESOME_WEBHOOK_SECRET} # GitHub token (for higher rate limits) GITHUB_TOKEN: ${AWESOME_GITHUB_TOKEN:-} # Security settings PORT: 3000 HOSTNAME: 0.0.0.0 # Override volume for production path volumes: - ${AWESOME_DB_VOLUME:-/var/lib/awesome/data}:/app/data labels: # Traefik labels for reverse proxy - 'traefik.enable=${AWESOME_TRAEFIK_ENABLED:-true}' # HTTP to HTTPS redirect - 'traefik.http.middlewares.${AWESOME_COMPOSE_PROJECT_NAME:-awesome}-redirect-web-secure.redirectscheme.scheme=https' - 'traefik.http.routers.${AWESOME_COMPOSE_PROJECT_NAME:-awesome}-web.middlewares=${AWESOME_COMPOSE_PROJECT_NAME:-awesome}-redirect-web-secure' - 'traefik.http.routers.${AWESOME_COMPOSE_PROJECT_NAME:-awesome}-web.rule=Host(`${AWESOME_TRAEFIK_HOST}`)' - 'traefik.http.routers.${AWESOME_COMPOSE_PROJECT_NAME:-awesome}-web.entrypoints=web' # HTTPS configuration - 'traefik.http.routers.${AWESOME_COMPOSE_PROJECT_NAME:-awesome}-web-secure.rule=Host(`${AWESOME_TRAEFIK_HOST}`)' - 'traefik.http.routers.${AWESOME_COMPOSE_PROJECT_NAME:-awesome}-web-secure.tls.certresolver=resolver' - 'traefik.http.routers.${AWESOME_COMPOSE_PROJECT_NAME:-awesome}-web-secure.entrypoints=web-secure' # Compression middleware - 'traefik.http.middlewares.${AWESOME_COMPOSE_PROJECT_NAME:-awesome}-compress.compress=true' - 'traefik.http.routers.${AWESOME_COMPOSE_PROJECT_NAME:-awesome}-web-secure.middlewares=${AWESOME_COMPOSE_PROJECT_NAME:-awesome}-compress' # Load balancer configuration - 'traefik.http.services.${AWESOME_COMPOSE_PROJECT_NAME:-awesome}-web-secure.loadbalancer.server.port=3000' - 'traefik.docker.network=${NETWORK_NAME}'