215 lines
4.8 KiB
Markdown
215 lines
4.8 KiB
Markdown
# 🐳 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:
|
|
|
|
```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
|
|
- **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
|
|
```bash
|
|
# 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
|
|
```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 wallabicher
|
|
```
|
|
|
|
### 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)
|
|
- `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`:
|
|
|
|
```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
|
|
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:
|
|
```bash
|
|
# 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:
|
|
```bash
|
|
docker-compose logs dashboard
|
|
```
|
|
|
|
### 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)
|
|
|