services:
  php:
    build:
      context: .
      dockerfile: Dockerfile
      args:
        UID: ${UID:-1000} # Utilise l'UID de l'hôte ou 1000 par défaut
        GID: ${GID:-1000} # Utilise le GID de l'hôte ou 1000 par défaut
    container_name: onirisys_php
    restart: unless-stopped
    environment:
      # Variables lues par PHP/Symfony depuis .env
      APP_ENV: prod
      APP_DEBUG: 0 # Important pour la prod
      APP_SECRET: ${APP_SECRET} # Doit être défini dans .env
      # IMPORTANT: S'assurer que DATABASE_URL dans .env est au format MySQL/MariaDB
      DATABASE_URL: ${DATABASE_URL} 
      MAILER_DSN: ${MAILER_DSN} # Doit être défini dans .env
      MESSENGER_TRANSPORT_DSN: ${MESSENGER_TRANSPORT_DSN:-doctrine://default?auto_setup=0} # Pour le worker si besoin
      # Autres variables nécessaires...
    volumes:
      # Monter uniquement les logs et cache pour persistance/inspection
      - ./var/cache:/srv/app/var/cache
      - ./var/log:/srv/app/var/log
      # - .:/srv/app:rw # Supprimé pour la production, le code vient de l'image
    depends_on:
      - db # Le PHP attend que la DB soit prête (via entrypoint ou attente interne)
    networks:
      - onirisys_net

  apache:
    image: httpd:2.4-alpine
    container_name: onirisys_apache
    restart: unless-stopped
    ports:
      - "${HTTP_PORT:-80}:80"
      # - "${HTTPS_PORT:-443}:443" # Décommenter pour HTTPS (nécessite config Apache + certs)
    volumes:
      # Monter les configurations Apache
      - ./docker/apache/httpd.conf:/usr/local/apache2/conf/httpd.conf:ro
      - ./docker/apache/vhost.conf:/usr/local/apache2/conf/extra/httpd-vhost.conf:ro
      # Monter le code source (en lecture seule) pour qu'Apache trouve public/index.php
      - .:/srv/app:ro
    depends_on:
      - php
    networks:
      - onirisys_net

  db:
    image: mariadb:latest # Ou mariadb:11, mariadb:10.6 etc.
    container_name: onirisys_db
    restart: unless-stopped
    environment:
      # Variables pour MariaDB/MySQL
      MYSQL_DATABASE: ${MYSQL_DATABASE:-app}
      MYSQL_USER: ${MYSQL_USER:-symfony}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD?Variable MYSQL_PASSWORD non définie dans .env} # Requis
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD?Variable MYSQL_ROOT_PASSWORD non définie dans .env} # Requis
    volumes:
      - db_data:/var/lib/mysql # Persistance des données MariaDB/MySQL
    networks:
      - onirisys_net

  # worker: # Décommenter si vous utilisez Messenger pour des tâches asynchrones
  #   build:
  #     context: .
  #     dockerfile: Dockerfile
  #   container_name: onirisys_worker
  #   restart: unless-stopped
  #   environment:
  #     # Mêmes variables que le service php
  #     APP_ENV: prod
  #     APP_DEBUG: 0
  #     APP_SECRET: ${APP_SECRET}
  #     DATABASE_URL: ${DATABASE_URL}
  #     MAILER_DSN: ${MAILER_DSN}
  #     MESSENGER_TRANSPORT_DSN: ${MESSENGER_TRANSPORT_DSN:-doctrine://default?auto_setup=0}
  #   volumes:
      # - .:/srv/app:cached
  #     - ./var/cache:/srv/app/var/cache
  #     - ./var/log:/srv/app/var/log
  #   command: php bin/console messenger:consume async --time-limit=3600 --memory-limit=128M -vv
  #   depends_on:
  #     - db
  #     - redis # Si Redis est utilisé par Messenger
  #   networks:
  #     - onirisys_net

  # redis: # Décommenter si vous utilisez Redis
  #   image: redis:alpine
  #   container_name: onirisys_redis
  #   restart: unless-stopped
  #   volumes:
  #     - redis_data:/data
  #   networks:
  #     - onirisys_net

volumes:
  db_data: {}
  # redis_data: {}

networks:
  onirisys_net:
    driver: bridge 