# Docker Compose para PRODUCCIÓN
# Base de datos: gestionada externamente (Coolify Database Resource o cualquier MySQL/MariaDB externo)
# Configurar DB_HOST, DB_NAME, DB_USER, DB_PASS en las variables de entorno de Coolify.

services:
  # Aplicación PHP con Nginx - MODO PRODUCCIÓN
  app:
    build:
      context: .
      dockerfile: Dockerfile
      args:
        - APP_ENV=production
    # container_name: NO definir — Coolify asigna su propio nombre
    restart: always
    # Coolify/Traefik gestiona el enrutamiento - no exponer puertos directamente
    expose:
      - "80"
    volumes:
      - app-logs:/var/www/html/logs
      - app-uploads:/var/www/html/uploads
    environment:
      # Zona horaria Colombia
      - TZ=America/Bogota
      
      # Entorno
      - APP_ENV=production
      - APP_DEBUG=false
      
      # Base de datos - configurar en Coolify Environment Variables
      - DB_HOST=${DB_HOST:-mysql}
      - DB_PORT=${DB_PORT:-3306}
      - DB_NAME=${DB_NAME:-usite_whatsapp_bot}
      - DB_USER=${DB_USER:-usite_whatsapp_user}
      - DB_PASS=${DB_PASS}
      
      # Redis — gestionado por Coolify (configurar REDIS_HOST en env vars)
      - REDIS_HOST=${REDIS_HOST:-127.0.0.1}
      - REDIS_PORT=${REDIS_PORT:-6379}
      - REDIS_PASSWORD=${REDIS_PASSWORD:-}
      
      # WhatsApp API
      - WHATSAPP_TOKEN=${WHATSAPP_TOKEN}
      - WHATSAPP_PHONE_NUMBER_ID=${WHATSAPP_PHONE_NUMBER_ID}
      - WEBHOOK_VERIFY_TOKEN=${WEBHOOK_VERIFY_TOKEN}
      
      # Configuración de producción
      - LOG_LEVEL=WARNING
      - ENABLE_RATE_LIMIT=true
      - DISPLAY_ERRORS=0
      - ERROR_REPORTING=0
      
      # PHP optimizado para producción
      - PHP_MEMORY_LIMIT=512M
      - PHP_MAX_EXECUTION_TIME=300
      - PHP_OPCACHE_ENABLE=1
      
    networks:
      - coolify
    healthcheck:
      test: ["CMD-SHELL", "curl -sf http://localhost/health.php || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 60s

  # Redis: gestionado como Database Resource en Coolify (externo)
  # Worker: corre dentro del contenedor app vía Supervisor
  # Maintenance: deshabilitado en Coolify

volumes:
  app-logs:
    driver: local
  app-uploads:
    driver: local

networks:
  coolify:
    external: true
