# Stack PROD — EPTM Dashboard. # # Cohabite avec docker-compose.dev.yml : # - Port interne 3002 (frontend + backend même port en prod Reflex) ; # dev : 3001 frontend Vite + 8001 backend granian, séparés. # - Volumes runtime distincts : ./data_prod et ./logs-prod # - Image immuable buildée depuis Dockerfile.prod (pas de mount code) # - NPM (proxy_net) dispatche dashboard.eptm-automation.ch → app:3002 # Nom de projet distinct du dev pour éviter que les deux compose se # marchent dessus (sinon Compose recrée le container dev quand on lance prod). name: eptm-dashboard-prod services: app: build: context: . dockerfile: Dockerfile.prod image: eptm-dashboard-prod:latest container_name: eptm-dashboard-prod-app-1 init: true restart: unless-stopped # Pas de port exposé sur le host : accès uniquement via NPM (proxy_net). volumes: # Runtime isolé de dev — DB, settings, auth, logs, etc. - ./data_prod:/app/data - ./logs-prod:/logs env_file: - .env.prod environment: # Frontend et backend sur le même port en prod (exigence Reflex 0.9+). - FRONTEND_PORT=3002 - BACKEND_PORT=3002 - API_URL=https://dashboard.eptm-automation.ch # Le hot reload n'est pas censé tourner en prod, mais on garde la # même exclusion pour cohérence si jamais quelqu'un toggle dev mode. - REFLEX_HOT_RELOAD_EXCLUDE_PATHS=/app/data - TZ=Europe/Zurich networks: - default - proxy_net networks: proxy_net: external: true