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} volumes: - worldplay-data:/app/data labels: - "traefik.enable=true" - "traefik.docker.network=traefik-public" # Main domains - "traefik.http.routers.worldplay.rule=Host(`worldplay.jeffemmett.com`) || 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" # www subdomain redirect for jeffemmett.com - "traefik.http.routers.worldplay-www.rule=Host(`www.worldplay.jeffemmett.com`)" - "traefik.http.routers.worldplay-www.entrypoints=web" - "traefik.http.routers.worldplay-www.middlewares=worldplay-www-redirect" - "traefik.http.middlewares.worldplay-www-redirect.redirectregex.regex=^https://www\\.worldplay\\.jeffemmett\\.com/(.*)" - "traefik.http.middlewares.worldplay-www-redirect.redirectregex.replacement=https://worldplay.art/$${1}" networks: - traefik-public healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/health"] interval: 30s timeout: 3s retries: 3 start_period: 10s volumes: worldplay-data: driver: local networks: traefik-public: external: true