# Entorno de DESARROLLO. En produccion no hay Docker (AGENTS.md seccion 5.3): alli MariaDB
# esta disponible en el host y la app conecta por las mismas variables DB_* (AGENTS.md 5.4).
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    image: book-promo-app
    working_dir: /app
    volumes:
      # Repo montado como volumen (AGENTS.md 5.5.2).
      - .:/app
      # Volumen anonimo para vendor: evita que el vendor del host pise el del contenedor.
      - /app/vendor
    # La configuracion (incluido DB_HOST=db) llega por .env, que carga config/bootstrap.php
    # desde el repo montado. El .env no se commitea; ver .env.example.
    depends_on:
      db:
        condition: service_healthy
    # Mantiene el contenedor vivo para ejecutar comandos con docker compose exec.
    command: ["tail", "-f", "/dev/null"]

  db:
    # MariaDB 11.8 LTS: incluye el tipo VECTOR nativo e indices vectoriales (VEC_DISTANCE_COSINE),
    # usados por BookKnowledge para la busqueda semantica de chunks.
    image: mariadb:11.8
    environment:
      MARIADB_DATABASE: ${DB_NAME:-book_promo}
      MARIADB_USER: ${DB_USER:-book_promo}
      MARIADB_PASSWORD: ${DB_PASSWORD:-book_promo}
      MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-root}
    ports:
      # Puerto publicado al host, solo para clientes externos (DBeaver, TablePlus). La app y
      # phpMyAdmin hablan con MariaDB por la red interna en 3306, no por este. Si 3306 ya esta
      # ocupado en tu host, cambia DB_HOST_PORT en .env.
      - "${DB_HOST_PORT:-3306}:3306"
    volumes:
      - db_data:/var/lib/mysql
    healthcheck:
      test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
      interval: 10s
      timeout: 5s
      retries: 10

  phpmyadmin:
    # UI web para inspeccionar MariaDB en desarrollo: http://localhost:8080
    image: phpmyadmin:latest
    environment:
      PMA_HOST: db
      PMA_PORT: 3306
      UPLOAD_LIMIT: 64M
    ports:
      - "${PMA_PORT:-8080}:80"
    depends_on:
      db:
        condition: service_healthy

volumes:
  db_data:
