services: # ============================================================ # MySQL Database # ============================================================ demat-facturation-db: image: mysql:8.0 container_name: demat-facturation-db restart: unless-stopped command: --innodb-use-native-aio=0 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci environment: MYSQL_ROOT_PASSWORD: demat_facturation_db_pass_2026 MYSQL_DATABASE: gestion_facturation volumes: - demat_facturation_mysql_data:/var/lib/mysql networks: - demat-facturation-internal healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-pdemat_facturation_db_pass_2026"] interval: 10s timeout: 5s retries: 5 start_period: 30s # ============================================================ # Application (Backend + Frontend) # ============================================================ demat-facturation-app: build: context: . dockerfile: Dockerfile container_name: demat-facturation-app restart: unless-stopped depends_on: demat-facturation-db: condition: service_healthy environment: NODE_ENV: production PORT: 3000 DATABASE_URL: mysql://root:demat_facturation_db_pass_2026@demat-facturation-db:3306/gestion_facturation JWT_SECRET: demat-facturation-jwt-secret-recette-2026 MISTRAL_API_KEY: ${MISTRAL_API_KEY:-} UPLOAD_DIR: /app/uploads # Manus OAuth (optionnel en recette) VITE_APP_ID: ${VITE_APP_ID:-demat-facturation-recette} OAUTH_SERVER_URL: ${OAUTH_SERVER_URL:-} VITE_OAUTH_PORTAL_URL: ${VITE_OAUTH_PORTAL_URL:-} OWNER_OPEN_ID: ${OWNER_OPEN_ID:-} OWNER_NAME: ${OWNER_NAME:-Administrateur} volumes: - demat_facturation_uploads:/app/uploads networks: - demat-facturation-internal - web labels: - "traefik.enable=true" - "traefik.http.routers.demat-facturation.rule=Host(`demat-facturation.recette.santinova-soft.org`)" - "traefik.http.routers.demat-facturation.entrypoints=websecure" - "traefik.http.routers.demat-facturation.tls.certresolver=letsencrypt" - "traefik.http.services.demat-facturation.loadbalancer.server.port=3000" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"] interval: 30s timeout: 10s retries: 3 start_period: 60s volumes: demat_facturation_mysql_data: driver: local demat_facturation_uploads: driver: local networks: demat-facturation-internal: driver: bridge web: external: true