formation-manager-itinova/docker-compose.yml

57 lines
1.7 KiB
YAML

services:
app:
build:
context: ./src
dockerfile: Dockerfile
args:
VITE_APP_ID: "formation-manager-itinova"
VITE_OAUTH_PORTAL_URL: "https://manus.im"
VITE_FRONTEND_FORGE_API_URL: ""
VITE_APP_TITLE: "Gestion des Formations"
container_name: formation-manager-itinova
restart: unless-stopped
env_file:
- .env
depends_on:
formations-prod-db:
condition: service_healthy
networks:
- web
- formations-prod-internal
labels:
- "traefik.enable=true"
- "traefik.http.routers.formations-prod.rule=Host(`formations.itinova.org`)"
- "traefik.http.routers.formations-prod.entrypoints=websecure"
- "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.services.formations-prod-svc.loadbalancer.server.port=3000"
- "traefik.docker.network=web"
formations-prod-db:
image: mysql:8.0
container_name: formations-prod-db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: formations_root_pass_2026_prod
MYSQL_DATABASE: itinova_formations
MYSQL_USER: formations_user
MYSQL_PASSWORD: FormationsDB2026SecureProd!
volumes:
- formations_prod_db_data:/var/lib/mysql
networks:
- formations-prod-internal
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-pformations_root_pass_2026_prod"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
networks:
web:
external: true
formations-prod-internal:
driver: bridge
volumes:
formations_prod_db_data: