Enhance caching mechanism and logging configuration
- 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.
This commit is contained in:
215
DOCKER.md
Normal file
215
DOCKER.md
Normal file
@@ -0,0 +1,215 @@
|
||||
# 🐳 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:
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
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
|
||||
```bash
|
||||
# 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
|
||||
```bash
|
||||
docker-compose down
|
||||
```
|
||||
|
||||
### Detener y eliminar volúmenes
|
||||
```bash
|
||||
docker-compose down -v
|
||||
```
|
||||
|
||||
### Reconstruir imágenes
|
||||
```bash
|
||||
docker-compose build --no-cache
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
### Reiniciar un servicio específico
|
||||
```bash
|
||||
docker-compose restart backend
|
||||
docker-compose restart wallamonitor
|
||||
```
|
||||
|
||||
### Ver estado de servicios
|
||||
```bash
|
||||
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`:
|
||||
|
||||
```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:
|
||||
```bash
|
||||
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:
|
||||
```bash
|
||||
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:
|
||||
```bash
|
||||
# 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:
|
||||
```bash
|
||||
docker-compose logs frontend
|
||||
```
|
||||
|
||||
### Reconstruir todo desde cero
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
|
||||
1. **Usar un proxy reverso** (nginx/traefik) delante de los servicios
|
||||
2. **Configurar SSL/TLS** para HTTPS
|
||||
3. **Usar secrets de Docker** para credenciales sensibles
|
||||
4. **Configurar backups** de los volúmenes de Redis
|
||||
5. **Monitoreo y logging** con herramientas como Prometheus/Grafana
|
||||
|
||||
## 📚 Más Información
|
||||
|
||||
- [Documentación de Docker Compose](https://docs.docker.com/compose/)
|
||||
- [README principal](../README.md)
|
||||
- [Guía de la interfaz web](../web/README.md)
|
||||
|
||||
Reference in New Issue
Block a user