version: '3.8'  # Version de la syntaxe Docker Compose (3.8 = stable, compatible avec Docker 20+)

services:  # Définition des services (chaque container que tu vas lancer)

  php:  # Service pour ton backend Symfony (PHP-FPM)
    build:  # On va construire une image Docker personnalisée
      context: .  # Le contexte de build (le dossier courant où est le Dockerfile)
      dockerfile: Dockerfile  # Le fichier Dockerfile à utiliser
    volumes:
      - .:/var/www/symfony  # Montage du code local dans le container (le dossier Symfony)
    networks:
      - connectPerso  # Connexion au réseau Docker nommé 'connectPerso'

  front:
    build:
      context: ./front
    working_dir: /app
    volumes:
      - ./front:/app
    ports:
      - "5173:5173"
    command: npm run dev:dock
    networks:
      - connectPerso  

  node:
    image: node:20
    working_dir: /var/www/symfony
    volumes:
      - .:/var/www/symfony
    command: tail -f /dev/null  

  nginx:  # Service pour Nginx, qui sert Symfony
    image: nginx:stable  # Utilisation de l'image officielle de Nginx (stable version)
    ports:
      - "8080:80"  # Mapping du port 8080 de ta machine vers le port 80 dans le container
    volumes:
      - .:/var/www/symfony  # On donne accès à Nginx aux fichiers Symfony
      - ./nginx.conf:/etc/nginx/nginx.conf  # On remplace la conf Nginx par la tienne (local -> container)
    depends_on:
      - php  # Nginx doit attendre que PHP-FPM (php) soit prêt
    networks:
      - connectPerso  # Connexion au même réseau Docker

  db:  # Service pour la base de données MySQL
    image: mysql:8.0  # Utilisation de l'image officielle MySQL 8.0
    environment:  # Variables d'environnement pour configurer MySQL
      MYSQL_ROOT_PASSWORD: votre_mot_de_passe  # Mot de passe pour le compte root
      MYSQL_DATABASE: courTotal  # Base de données à créer automatiquement
    ports:
      - "3307:3306"  # Mapping du port 3307 de ta machine vers 3306 dans le container (évite conflits)
    networks:
      - connectPerso  # Connexion au même réseau Docker
    volumes:
      - ./mysql_data:/var/lib/mysql
  
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - "8081:80"
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: votre_mot_de_passe
    networks:
      - connectPerso

networks:  # Déclaration des réseaux Docker
  connectPerso:  # Nom du réseau personnalisé
    driver: bridge  # Type de réseau 'bridge' (isolé entre containers, mais accessible entre eux)

volumes:
  mysql_data:
