# Traefik integration overlay. # # Usage: # docker compose -f compose.yml -f compose.traefik.yml up -d --build # # Assumes Traefik is already running on your host with an external Docker # network. Add these variables to your .env (see .env.example): # # TRAEFIK_NETWORK name of the external Traefik network (default: traefik_proxy) # TRAEFIK_ENTRYPOINT Traefik entrypoint name (default: websecure) # TRAEFIK_CERT_RESOLVER cert resolver name for TLS (default: letsencrypt) # FRONTEND_HOST public hostname for the frontend e.g. tv.example.com # BACKEND_HOST public hostname for the backend API e.g. tv-api.example.com # # Remember: NEXT_PUBLIC_API_URL in .env must be the *public* backend URL, # e.g. https://tv-api.example.com/api/v1, and you must rebuild after changing it. services: backend: ports: [] # Traefik handles ingress; no direct port exposure needed networks: - default - traefik labels: - "traefik.enable=true" - "traefik.docker.network=${TRAEFIK_NETWORK:-traefik_proxy}" - "traefik.http.routers.ktv-backend.rule=Host(`${BACKEND_HOST}`)" - "traefik.http.routers.ktv-backend.entrypoints=${TRAEFIK_ENTRYPOINT:-websecure}" - "traefik.http.routers.ktv-backend.tls.certresolver=${TRAEFIK_CERT_RESOLVER:-letsencrypt}" - "traefik.http.services.ktv-backend.loadbalancer.server.port=3000" frontend: ports: [] networks: - default - traefik labels: - "traefik.enable=true" - "traefik.docker.network=${TRAEFIK_NETWORK:-traefik_proxy}" - "traefik.http.routers.ktv-frontend.rule=Host(`${FRONTEND_HOST}`)" - "traefik.http.routers.ktv-frontend.entrypoints=${TRAEFIK_ENTRYPOINT:-websecure}" - "traefik.http.routers.ktv-frontend.tls.certresolver=${TRAEFIK_CERT_RESOLVER:-letsencrypt}" - "traefik.http.services.ktv-frontend.loadbalancer.server.port=3001" networks: traefik: external: true name: ${TRAEFIK_NETWORK:-traefik_proxy}