up
This commit is contained in:
@@ -0,0 +1,177 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user