version: '3.8' services: worldplay: build: . container_name: worldplay-website restart: unless-stopped environment: - NODE_ENV=production - PORT=3000 - DATA_DIR=/app/data - ADMIN_TOKEN=${ADMIN_TOKEN:-worldplay-admin-2026} - RESEND_API_KEY=${RESEND_API_KEY} - GOOGLE_SHEET_ID=${GOOGLE_SHEET_ID} - GOOGLE_CREDENTIALS=${GOOGLE_CREDENTIALS} # Listmonk newsletter integration - LISTMONK_URL=http://listmonk:9000 - LISTMONK_USER=worldplay-api - LISTMONK_PASS=worldplay-api-2026 - LISTMONK_LIST_ID=20 volumes: - worldplay-data:/app/data labels: - "traefik.enable=true" - "traefik.docker.network=traefik-public" # Main domains - "traefik.http.routers.worldplay.rule=Host(`worldplay.art`) || Host(`www.worldplay.art`)" - "traefik.http.routers.worldplay.entrypoints=web" - "traefik.http.routers.worldplay.service=worldplay" - "traefik.http.services.worldplay.loadbalancer.server.port=3000" networks: - traefik-public - listmonk-internal healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3000/health"] interval: 30s timeout: 3s retries: 3 start_period: 10s volumes: worldplay-data: driver: local networks: traefik-public: external: true listmonk-internal: external: true name: listmonk_listmonk-internal