178 lines
4.5 KiB
YAML
178 lines
4.5 KiB
YAML
# Docker Compose para DESARROLLO
|
|
# Uso: docker-compose -f docker-compose.dev.yml up -d
|
|
|
|
services:
|
|
# Aplicación PHP con Nginx - MODO DEV
|
|
app:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile # Usar Dockerfile principal
|
|
args:
|
|
- APP_ENV=development
|
|
container_name: whatsapp-dev-app
|
|
restart: unless-stopped
|
|
working_dir: /var/www/html
|
|
ports:
|
|
- "8080:80" # Aplicación web
|
|
- "9003:9003" # XDebug (para IDEs)
|
|
volumes:
|
|
# Hot-reload: cambios en código se reflejan inmediatamente
|
|
- ./:/var/www/html
|
|
- ./logs:/var/www/html/logs
|
|
- ./uploads:/var/www/html/uploads
|
|
- php-socket:/run/php
|
|
environment:
|
|
# Entorno de desarrollo
|
|
- APP_ENV=development
|
|
- APP_DEBUG=true
|
|
|
|
# Base de datos
|
|
- DB_HOST=${DB_HOST}
|
|
- DB_PORT=${DB_PORT:-3306}
|
|
- DB_NAME=${DB_NAME}
|
|
- DB_USER=${DB_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 desarrollo
|
|
- LOG_LEVEL=DEBUG
|
|
- ENABLE_RATE_LIMIT=false
|
|
- DISPLAY_ERRORS=1
|
|
- ERROR_REPORTING=E_ALL
|
|
|
|
# XDebug (para debugging con IDE)
|
|
- XDEBUG_MODE=debug,develop,coverage
|
|
- XDEBUG_CONFIG=client_host=host.docker.internal client_port=9003
|
|
- PHP_IDE_CONFIG=serverName=whatsapp-docker
|
|
|
|
# PHP optimizado para desarrollo
|
|
- PHP_MEMORY_LIMIT=512M
|
|
- PHP_MAX_EXECUTION_TIME=300
|
|
- PHP_OPCACHE_ENABLE=0 # Desactivar OPcache para hot-reload
|
|
|
|
depends_on:
|
|
redis:
|
|
condition: service_healthy
|
|
networks:
|
|
- whatsapp-dev-network
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost/health.php"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 40s
|
|
|
|
# Redis para colas y caché
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: whatsapp-dev-redis
|
|
restart: unless-stopped
|
|
ports:
|
|
- "6379:6379"
|
|
command: >
|
|
redis-server
|
|
--appendonly yes
|
|
--maxmemory 256mb
|
|
--maxmemory-policy allkeys-lru
|
|
--loglevel verbose
|
|
volumes:
|
|
- redis-dev-data:/data
|
|
networks:
|
|
- whatsapp-dev-network
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 10s
|
|
timeout: 3s
|
|
retries: 5
|
|
start_period: 10s
|
|
|
|
# Workers (solo 1 en desarrollo para facilitar debugging)
|
|
worker:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.worker # Usar Dockerfile de worker existente
|
|
container_name: whatsapp-dev-worker
|
|
restart: unless-stopped
|
|
working_dir: /var/www/html
|
|
volumes:
|
|
- ./:/var/www/html
|
|
- ./logs:/var/www/html/logs
|
|
environment:
|
|
- APP_ENV=development
|
|
- APP_DEBUG=true
|
|
- DB_HOST=${DB_HOST}
|
|
- DB_PORT=${DB_PORT:-3306}
|
|
- DB_NAME=${DB_NAME}
|
|
- DB_USER=${DB_USER}
|
|
- DB_PASS=${DB_PASS}
|
|
- REDIS_HOST=redis
|
|
- REDIS_PORT=6379
|
|
- REDIS_PASSWORD=${REDIS_PASSWORD:-}
|
|
- LOG_LEVEL=DEBUG
|
|
- XDEBUG_MODE=debug
|
|
- XDEBUG_CONFIG=client_host=host.docker.internal client_port=9003
|
|
depends_on:
|
|
redis:
|
|
condition: service_healthy
|
|
networks:
|
|
- whatsapp-dev-network
|
|
command: php worker.php --daemon
|
|
|
|
# Redis Commander - Interface web para Redis
|
|
redis-commander:
|
|
image: rediscommander/redis-commander:latest
|
|
container_name: whatsapp-dev-redis-ui
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8082:8081"
|
|
environment:
|
|
- REDIS_HOSTS=local:redis:6379
|
|
- REDIS_PASSWORD=${REDIS_PASSWORD:-}
|
|
depends_on:
|
|
- redis
|
|
networks:
|
|
- whatsapp-dev-network
|
|
|
|
# MailHog - Captura emails para testing (opcional)
|
|
mailhog:
|
|
image: mailhog/mailhog:latest
|
|
container_name: whatsapp-dev-mailhog
|
|
restart: unless-stopped
|
|
ports:
|
|
- "1025:1025" # SMTP
|
|
- "8025:8025" # Web UI
|
|
networks:
|
|
- whatsapp-dev-network
|
|
|
|
# Adminer - Gestor de base de datos ligero (alternativa a phpMyAdmin)
|
|
adminer:
|
|
image: adminer:latest
|
|
container_name: whatsapp-dev-adminer
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8083:8080"
|
|
environment:
|
|
- ADMINER_DEFAULT_SERVER=${DB_HOST}
|
|
- ADMINER_DESIGN=nette
|
|
networks:
|
|
- whatsapp-dev-network
|
|
|
|
volumes:
|
|
redis-dev-data:
|
|
driver: local
|
|
php-socket:
|
|
driver: local
|
|
|
|
networks:
|
|
whatsapp-dev-network:
|
|
driver: bridge
|