Files
wallabicher/DOCKER.md

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
  • Frontend (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

Frontend (Vue + Nginx)

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 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 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 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:

  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