# Guía de Uso - Docker Compose Development ## 🚀 Inicio Rápido ### Levantar entorno de desarrollo ```bash docker-compose -f docker-compose.dev.yml up -d ``` ### Ver logs en tiempo real ```bash docker-compose -f docker-compose.dev.yml logs -f ``` ### Detener entorno ```bash docker-compose -f docker-compose.dev.yml down ``` ### Reconstruir contenedores ```bash docker-compose -f docker-compose.dev.yml build --no-cache docker-compose -f docker-compose.dev.yml up -d ``` --- ## 🛠️ Herramientas Disponibles | Servicio | URL | Descripción | |----------|-----|-------------| | **Aplicación** | http://localhost:8080 | WhatsApp Bot principal | | **XDebug** | Puerto 9003 | Debugger para IDE (VSCode, PHPStorm) | | **Redis Commander** | http://localhost:8082 | Interface web para Redis | | **MailHog** | http://localhost:8025 | Captura de emails de prueba | | **Adminer** | http://localhost:8083 | Gestor de base de datos | --- ## 🔧 Características de Desarrollo ### ✅ Hot Reload Activado Los cambios en archivos PHP/JS/CSS se reflejan **inmediatamente** sin reiniciar: - ✅ Volumen mount: `./:/var/www/html` - ✅ OPcache desactivado - ✅ No requiere rebuild ### 🐛 Debugging con XDebug #### VSCode Configuration (`.vscode/launch.json`) ```json { "version": "0.2.0", "configurations": [ { "name": "Listen for XDebug", "type": "php", "request": "launch", "port": 9003, "pathMappings": { "/var/www/html": "${workspaceFolder}" } } ] } ``` #### PHPStorm Configuration 1. Settings → PHP → Debug → XDebug 2. Port: `9003` 3. Path mappings: `/var/www/html` → `/Users/lizandro/Documents/GitHub/whatsapp` ### 📊 Logs en Tiempo Real ```bash # Ver logs de todos los servicios docker-compose -f docker-compose.dev.yml logs -f # Ver logs de un servicio específico docker-compose -f docker-compose.dev.yml logs -f app # Ver logs PHP-FPM docker-compose -f docker-compose.dev.yml exec app tail -f /var/www/html/logs/php-fpm-error.log # Ver logs de XDebug docker-compose -f docker-compose.dev.yml exec app tail -f /var/www/html/logs/xdebug.log ``` --- ## 📧 Testing de Emails con MailHog MailHog captura todos los emails enviados desde la aplicación: 1. Configura PHP para usar MailHog: ```php ini_set('SMTP', 'mailhog'); ini_set('smtp_port', 1025); ``` 2. Abre http://localhost:8025 para ver emails capturados --- ## 🔍 Inspeccionar Redis ### Opción 1: Redis Commander (Web UI) - URL: http://localhost:8082 - Ver claves, valores, TTL - Ejecutar comandos Redis ### Opción 2: Redis CLI ```bash docker-compose -f docker-compose.dev.yml exec redis redis-cli # Comandos útiles: KEYS * # Ver todas las claves GET clave # Ver valor de una clave TTL clave # Ver tiempo de vida MONITOR # Ver comandos en tiempo real ``` --- ## 🗄️ Acceso a Base de Datos ### Adminer (http://localhost:8083) - **Server**: Tu DB_HOST del .env - **Username**: Tu DB_USER del .env - **Password**: Tu DB_PASS del .env - **Database**: Tu DB_NAME del .env ### MySQL CLI desde contenedor ```bash docker-compose -f docker-compose.dev.yml exec app mysql -h ${DB_HOST} -u ${DB_USER} -p${DB_PASS} ${DB_NAME} ``` --- ## 🧪 Comandos Útiles ### Ejecutar comandos en el contenedor ```bash # Bash interactivo docker-compose -f docker-compose.dev.yml exec app bash # PHP CLI docker-compose -f docker-compose.dev.yml exec app php -v # Composer docker-compose -f docker-compose.dev.yml exec app composer install # Verificar configuración PHP docker-compose -f docker-compose.dev.yml exec app php -i | grep xdebug ``` ### Reiniciar servicios ```bash # Reiniciar un servicio específico docker-compose -f docker-compose.dev.yml restart app # Reiniciar todos docker-compose -f docker-compose.dev.yml restart ``` ### Limpiar todo (cuidado!) ```bash # Detener y eliminar contenedores + volúmenes docker-compose -f docker-compose.dev.yml down -v # Limpiar imágenes no utilizadas docker system prune -a ``` --- ## 🚨 Troubleshooting ### Problema: Cambios no se reflejan ```bash # 1. Verificar que el volumen esté montado docker-compose -f docker-compose.dev.yml exec app ls -la /var/www/html # 2. Verificar que OPcache esté desactivado docker-compose -f docker-compose.dev.yml exec app php -i | grep opcache.enable # 3. Limpiar caché del navegador (Cmd+Shift+R) ``` ### Problema: XDebug no funciona ```bash # Verificar que XDebug esté instalado docker-compose -f docker-compose.dev.yml exec app php -m | grep xdebug # Ver configuración de XDebug docker-compose -f docker-compose.dev.yml exec app php -i | grep xdebug # Ver logs de XDebug docker-compose -f docker-compose.dev.yml exec app tail -f /var/www/html/logs/xdebug.log ``` ### Problema: Redis no conecta ```bash # Verificar que Redis esté corriendo docker-compose -f docker-compose.dev.yml ps # Test de conexión docker-compose -f docker-compose.dev.yml exec app php -r "try { \$r = new Redis(); \$r->connect('redis', 6379); echo 'OK'; } catch (Exception \$e) { echo \$e->getMessage(); }" ``` --- ## ⚠️ Diferencias con Producción | Característica | Desarrollo | Producción | |----------------|-----------|------------| | OPcache | ❌ Desactivado | ✅ Activado | | Error Display | ✅ Activado | ❌ Desactivado | | XDebug | ✅ Activado | ❌ Desactivado | | Log Level | DEBUG | INFO/WARNING | | Workers | 1 | 2+ | | Rate Limiting | ❌ Desactivado | ✅ Activado | --- ## 🔄 Migrar de Dev a Producción ```bash # 1. Detener entorno de desarrollo docker-compose -f docker-compose.dev.yml down # 2. Levantar entorno de producción docker-compose up -d # 3. Verificar docker-compose ps ``` --- ## 📝 Notas - **No commitear** `docker-compose.dev.yml` en producción - Usar `.env` para configuración sensible - Los volúmenes de desarrollo son locales (no se comparten) - MailHog solo atrapa emails locales, no los envía realmente