4.8 KiB
🐳 Guía de Docker para Wallabicher
Esta guía explica cómo ejecutar Wallabicher usando Docker Compose.
📋 Requisitos Previos
- Docker 20.10+
- Docker Compose 2.0+
🚀 Inicio Rápido
1. Configurar archivos
Asegúrate de tener los archivos de configuración:
# Si no existen, cópialos desde los archivos de muestra
cp config.sample.yaml config.yaml
cp workers.sample.json workers.json
# Edita config.yaml con tus credenciales de Telegram
nano config.yaml
2. Construir e iniciar servicios
docker-compose up -d
Esto iniciará:
- Redis (puerto 6379) - Cache de artículos
- Backend (puerto 3001) - API Node.js
- Dashboard (puerto 3000) - Interfaz web Vue
- Wallabicher Python - Servicio principal de monitoreo
3. Acceder a la interfaz
Abre tu navegador en: http://localhost:3000
📊 Servicios
Redis
- Puerto: 6379
- Volumen:
redis-data(persistente) - Uso: Cache de artículos notificados
Backend (Node.js)
- Puerto: 3001
- API: http://localhost:3001/api
- WebSocket: ws://localhost:3001
- Funciones: API REST y WebSockets para la interfaz web
Dashboard (Vue + Nginx)
- Puerto: 3000
- URL: http://localhost:3000
- Funciones: Interfaz web moderna
Wallabicher (Python)
- Sin puertos expuestos (solo comunicación interna)
- Funciones: Monitoreo de marketplaces y envío de notificaciones
🔧 Comandos Útiles
Ver logs
# Todos los servicios
docker-compose logs -f
# Servicio específico
docker-compose logs -f wallabicher
docker-compose logs -f backend
docker-compose logs -f dashboard
Detener servicios
docker-compose down
Detener y eliminar volúmenes
docker-compose down -v
Reconstruir imágenes
docker-compose build --no-cache
docker-compose up -d
Reiniciar un servicio específico
docker-compose restart backend
docker-compose restart wallabicher
Ver estado de servicios
docker-compose ps
📁 Volúmenes y Archivos
Los siguientes archivos se montan como volúmenes:
config.yaml- Configuración (solo lectura en backend)workers.json- Configuración de workers (lectura/escritura)logs/- Directorio de logs (lectura/escritura)
Nota: Los cambios en workers.json desde la interfaz web se guardan directamente en este archivo. Los favoritos se almacenan en Redis.
🔐 Configuración de Redis
Si usas Redis en Docker, el backend se conecta automáticamente al servicio redis.
Para usar Redis desde fuera de Docker (por ejemplo, desde tu máquina local), actualiza config.yaml:
cache:
type: "redis"
redis:
host: "localhost" # O la IP de tu máquina host
port: 6379
db: 0
password: null
Y en docker-compose.yml, cambia REDIS_HOST en el servicio backend a host.docker.internal (en Mac/Windows) o la IP de tu host.
🐛 Solución de Problemas
El backend no se conecta a Redis
Verifica que Redis esté ejecutándose:
docker-compose ps redis
docker-compose logs redis
Los archivos no se actualizan
Asegúrate de que los archivos existan y tengan los permisos correctos:
touch config.yaml workers.json
mkdir -p logs
chmod 666 workers.json
Error: monitor.log es un directorio
Si ves este error, significa que Docker creó un directorio en lugar de un archivo:
# Eliminar el directorio si existe
rm -rf monitor.log
# Crear el directorio de logs correcto
mkdir -p logs
El dashboard no carga
Verifica los logs:
docker-compose logs dashboard
Reconstruir todo desde cero
docker-compose down -v
docker-compose build --no-cache
docker-compose up -d
🔄 Actualizar la Aplicación
Para actualizar después de cambios en el código:
# Reconstruir solo el servicio que cambió
docker-compose build backend
docker-compose up -d backend
# O reconstruir todo
docker-compose build
docker-compose up -d
📝 Variables de Entorno
Puedes personalizar el comportamiento usando variables de entorno en docker-compose.yml:
PROJECT_ROOT: Ruta donde se montan los archivos (backend)REDIS_HOST: Host de Redis (por defecto:redis)NODE_ENV: Entorno Node.js (production/development)PORT: Puerto del backend (por defecto: 3001)
🚀 Producción
Para producción, considera:
- Usar un proxy reverso (nginx/traefik) delante de los servicios
- Configurar SSL/TLS para HTTPS
- Usar secrets de Docker para credenciales sensibles
- Configurar backups de los volúmenes de Redis
- Monitoreo y logging con herramientas como Prometheus/Grafana