services: # Redis para cache de artículos redis: image: redis:7-alpine container_name: wallamonitor-redis ports: - "6379:6379" volumes: - redis-data:/data command: redis-server --appendonly yes healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 3s retries: 3 networks: - wallamonitor-network restart: unless-stopped # Backend Node.js API backend: build: context: ./web/backend dockerfile: Dockerfile container_name: wallamonitor-backend environment: - NODE_ENV=production - PORT=3001 - PROJECT_ROOT=/data - REDIS_HOST=redis volumes: # Montar archivos de configuración y datos en ubicación predecible - ./config.yaml:/data/config.yaml:ro - ./workers.json:/data/workers.json:rw - ./logs:/data/logs:rw # Montar el directorio raíz para acceso a archivos - .:/data/project:ro depends_on: redis: condition: service_healthy networks: - wallamonitor-network restart: unless-stopped healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3001/api/stats"] interval: 30s timeout: 10s retries: 3 # Frontend Vue frontend: build: context: ./web/frontend dockerfile: Dockerfile container_name: wallamonitor-frontend depends_on: - backend networks: - wallamonitor-network restart: unless-stopped # Servicio Python principal (Wallamonitor) # NOTA: Para usar Redis, asegúrate de que config.yaml tenga: # cache: # type: "redis" # redis: # host: "redis" # Nombre del servicio en Docker wallamonitor: build: context: . dockerfile: Dockerfile container_name: wallamonitor-python environment: - PYTHONUNBUFFERED=1 volumes: # Montar archivos de configuración - ./config.yaml:/app/config.yaml:ro - ./workers.json:/app/workers.json:rw # Montar directorio de logs en lugar del archivo para evitar problemas - ./logs:/app/logs:rw depends_on: redis: condition: service_healthy backend: condition: service_healthy networks: - wallamonitor-network restart: unless-stopped # El servicio Python no necesita exponer puertos, solo se comunica con Redis y Telegram volumes: redis-data: driver: local networks: wallamonitor-network: driver: bridge