240 lines
6.5 KiB
YAML
240 lines
6.5 KiB
YAML
# Docker Compose para DESARROLLO
|
|
# Uso: docker-compose -f docker-compose.dev.yml up -d
|
|
|
|
services:
|
|
# MariaDB Database (compatible con producción)
|
|
mysql:
|
|
image: mariadb:10.11
|
|
container_name: whatsapp-dev-mysql
|
|
restart: unless-stopped
|
|
ports:
|
|
- "3306:3306"
|
|
environment:
|
|
MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-root_password_2026}
|
|
MARIADB_DATABASE: ${DB_NAME:-usite_whatsapp_bot}
|
|
MARIADB_USER: ${DB_USER:-usite_whatsapp_user}
|
|
MARIADB_PASSWORD: ${DB_PASS:-6q!Vio0fn@PFmsLyHjH5}
|
|
TZ: America/Bogota
|
|
volumes:
|
|
- mysql-dev-data:/var/lib/mysql
|
|
- ./database:/docker-entrypoint-initdb.d:ro
|
|
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-time-zone=America/Bogota
|
|
networks:
|
|
- whatsapp-dev-network
|
|
healthcheck:
|
|
test: ["CMD", "mariadb-admin", "ping", "-h", "localhost", "-u", "root", "-p${DB_ROOT_PASSWORD:-root_password_2026}"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 30s
|
|
|
|
# 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" # HTTP
|
|
- "8443:443" # HTTPS
|
|
- "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
|
|
- ./docker/nginx/ssl.conf:/etc/nginx/http.d/ssl.conf:ro
|
|
- ssl-certs:/etc/nginx/ssl
|
|
- php-socket:/run/php
|
|
environment:
|
|
# Zona horaria Colombia
|
|
- TZ=America/Bogota
|
|
|
|
# Entorno de desarrollo
|
|
- APP_ENV=development
|
|
- APP_DEBUG=true
|
|
|
|
# Base de datos - apuntar a MySQL local
|
|
- 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:-6q!Vio0fn@PFmsLyHjH5}
|
|
|
|
# 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
|
|
mysql:
|
|
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=mysql
|
|
- DB_PORT=${DB_PORT:-3306}
|
|
- DB_NAME=${DB_NAME:-usite_whatsapp_bot}
|
|
- DB_USER=${DB_USER:-usite_whatsapp_user}
|
|
- DB_PASS=${DB_PASS:-6q!Vio0fn@PFmsLyHjH5}
|
|
- 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
|
|
mysql:
|
|
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=mysql
|
|
- ADMINER_DESIGN=nette
|
|
depends_on:
|
|
mysql:
|
|
condition: service_healthy
|
|
networks:
|
|
- whatsapp-dev-network
|
|
|
|
# phpMyAdmin - Gestor de base de datos alternativo
|
|
phpmyadmin:
|
|
image: phpmyadmin:latest
|
|
container_name: whatsapp-dev-phpmyadmin
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8084:80"
|
|
environment:
|
|
PMA_HOST: mysql
|
|
PMA_PORT: 3306
|
|
PMA_USER: ${DB_USER:-usite_whatsapp_user}
|
|
PMA_PASSWORD: ${DB_PASS:-6q!Vio0fn@PFmsLyHjH5}
|
|
UPLOAD_LIMIT: 100M
|
|
depends_on:
|
|
mysql:
|
|
condition: service_healthy
|
|
networks:
|
|
- whatsapp-dev-network
|
|
|
|
volumes:
|
|
mysql-dev-data:
|
|
driver: local
|
|
redis-dev-data:
|
|
driver: local
|
|
ssl-certs:
|
|
driver: local
|
|
php-socket:
|
|
driver: local
|
|
|
|
networks:
|
|
whatsapp-dev-network:
|
|
driver: bridge
|