Files
whatsapp/docker-compose.dev.yml
T
2026-01-27 23:56:49 -05:00

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