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