- Updated .gitignore to include additional IDE and OS files, as well as log and web build directories. - Expanded config.sample.yaml to include cache configuration options for memory and Redis. - Modified wallamonitor.py to load cache configuration and initialize ArticleCache. - Refactored QueueManager to utilize ArticleCache for tracking notified articles. - Improved logging setup to dynamically determine log file path based on environment.
4.8 KiB
🐳 Guía de Docker para Wallamonitor
Esta guía explica cómo ejecutar Wallamonitor 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
- Frontend (puerto 3000) - Interfaz web Vue
- Wallamonitor 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
Frontend (Vue + Nginx)
- Puerto: 3000
- URL: http://localhost:3000
- Funciones: Interfaz web moderna
Wallamonitor (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 wallamonitor
docker-compose logs -f backend
docker-compose logs -f frontend
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 wallamonitor
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)favorites.json- Favoritos (lectura/escritura)logs/- Directorio de logs (lectura/escritura)
Nota: Los cambios en workers.json y favorites.json desde la interfaz web se guardan directamente en estos archivos.
🔐 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 favorites.json
mkdir -p logs
chmod 666 workers.json favorites.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 frontend no carga
Verifica los logs:
docker-compose logs frontend
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