services: app: build: context: . dockerfile: Dockerfile args: VITE_APP_ID: ${VITE_APP_ID} VITE_OAUTH_PORTAL_URL: ${VITE_OAUTH_PORTAL_URL} VITE_APP_TITLE: ${VITE_APP_TITLE} VITE_FRONTEND_FORGE_API_URL: ${VITE_FRONTEND_FORGE_API_URL} VITE_FRONTEND_FORGE_API_KEY: ${VITE_FRONTEND_FORGE_API_KEY} VITE_ANALYTICS_ENDPOINT: ${VITE_ANALYTICS_ENDPOINT} VITE_ANALYTICS_WEBSITE_ID: ${VITE_ANALYTICS_WEBSITE_ID} VITE_APP_LOGO: ${VITE_APP_LOGO} image: formation-manager-itinova-app:v2 container_name: formation-manager-itinova restart: unless-stopped env_file: - .env environment: APP_PUBLIC_URL: https://formations-itinova.santinova-soft.org NODE_ENV: production PORT: 3000 TRUST_PROXY: 1 volumes: - /opt/manus-deploy/apps/formation-manager-itinova/uploads:/app/uploads networks: - web labels: - "traefik.enable=true" - "traefik.docker.network=web" - "traefik.http.routers.formations-prod.entrypoints=websecure" - "traefik.http.routers.formations-prod.rule=Host(`formations-itinova.santinova-soft.org`)" - "traefik.http.routers.formations-prod.tls=true" - "traefik.http.routers.formations-prod.tls.certresolver=letsencrypt" - "traefik.http.routers.formations-prod.service=formations-prod-svc" - "traefik.http.routers.formations-itinova.entrypoints=websecure" - "traefik.http.routers.formations-itinova.rule=Host(`formations-itinova.santinova-soft.org`)" - "traefik.http.routers.formations-itinova.tls=true" - "traefik.http.routers.formations-itinova.tls.certresolver=letsencrypt" - "traefik.http.routers.formations-itinova.service=formations-prod-svc" # Alias historique : conserve le chemin et redirige définitivement vers l'URL Itinova canonique. - "traefik.http.routers.formations-legacy-redirect.entrypoints=websecure" - "traefik.http.routers.formations-legacy-redirect.rule=Host(`formations.santinova-soft.org`)" - "traefik.http.routers.formations-legacy-redirect.tls=true" - "traefik.http.routers.formations-legacy-redirect.tls.certresolver=letsencrypt" - "traefik.http.routers.formations-legacy-redirect.middlewares=formations-legacy-redirect" - "traefik.http.routers.formations-legacy-redirect.service=formations-prod-svc" - "traefik.http.middlewares.formations-legacy-redirect.redirectregex.regex=^https://formations\\.santinova-soft\\.org/(.*)" - "traefik.http.middlewares.formations-legacy-redirect.redirectregex.replacement=https://formations-itinova.santinova-soft.org/$${1}" - "traefik.http.middlewares.formations-legacy-redirect.redirectregex.permanent=true" - "traefik.http.services.formations-prod-svc.loadbalancer.server.port=3000" networks: web: external: true