# Docker Compose para PRODUCCIÓN # Uso: docker-compose -f docker-compose.prod.yml up -d services: # Aplicación PHP con Nginx - MODO PRODUCCIÓN app: build: context: . dockerfile: Dockerfile args: - APP_ENV=production container_name: whatsapp-app restart: always ports: - "80:80" - "443:443" volumes: - ./logs:/var/www/html/logs - ./uploads:/var/www/html/uploads - ./docker/nginx/ssl.conf:/etc/nginx/http.d/ssl.conf:ro - /etc/letsencrypt:/etc/letsencrypt:ro - ssl-certs:/etc/nginx/ssl environment: # Zona horaria Colombia - TZ=America/Bogota # Entorno - APP_ENV=production - APP_DEBUG=false # Base de datos - usar base de datos externa (producción actual) - DB_HOST=${DB_HOST:-77.37.126.126} - DB_PORT=${DB_PORT:-3306} - DB_NAME=${DB_NAME:-usite_whatsapp_bot} - DB_USER=${DB_USER:-usite_whatsapp_user} - DB_PASS=${DB_PASS} # Redis - REDIS_HOST=redis - 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=256M - PHP_MAX_EXECUTION_TIME=60 - PHP_OPCACHE_ENABLE=1 depends_on: redis: condition: service_healthy networks: - whatsapp-network healthcheck: test: ["CMD", "curl", "-f", "http://localhost/health.php"] interval: 30s timeout: 5s retries: 3 start_period: 30s # Redis para colas y caché redis: image: redis:7-alpine container_name: whatsapp-redis restart: always command: > redis-server --appendonly yes --maxmemory 128mb --maxmemory-policy allkeys-lru volumes: - redis-data:/data networks: - whatsapp-network healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 3s retries: 5 # Workers para procesamiento en background worker: build: context: . dockerfile: Dockerfile.worker container_name: whatsapp-worker restart: always volumes: - ./logs:/var/www/html/logs environment: - TZ=America/Bogota - APP_ENV=production - APP_DEBUG=false - DB_HOST=${DB_HOST:-77.37.126.126} - DB_PORT=${DB_PORT:-3306} - DB_NAME=${DB_NAME:-usite_whatsapp_bot} - DB_USER=${DB_USER:-usite_whatsapp_user} - DB_PASS=${DB_PASS} - REDIS_HOST=redis - REDIS_PORT=6379 - REDIS_PASSWORD=${REDIS_PASSWORD:-} - LOG_LEVEL=WARNING depends_on: redis: condition: service_healthy networks: - whatsapp-network command: php worker.php --daemon volumes: redis-data: driver: local ssl-certs: driver: local networks: whatsapp-network: driver: bridge