services: db: image: mysql:8.0 env_file: .env volumes: - db_data:/var/lib/mysql - ./migrations/schema.sql:/docker-entrypoint-initdb.d/01_schema.sql:ro healthcheck: test: [ "CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-u", "root", "-p${MYSQL_ROOT_PASSWORD}", ] interval: 3s timeout: 3s retries: 10 restart: unless-stopped web: build: . env_file: .env environment: - FLASK_ENV=${FLASK_ENV} volumes: # Montage restreint au code applicatif (pas .git / mysql_data / .env) - ./app:/app/app ports: - "5000:5000" depends_on: db: condition: service_healthy restart: unless-stopped phpmyadmin: image: phpmyadmin/phpmyadmin env_file: .env environment: PMA_HOST: db ports: # Accès local uniquement (pas d'exposition publique) - "8080:80" depends_on: - db restart: unless-stopped volumes: db_data: