Ctrl K
ComunidadGuías…

docker-compose.yml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
name: chatty-managed-supabase

# Supported self-hosting profile: move only the Chatty containers to your
# host. Auth, Postgres, Storage, and Realtime remain in your Supabase project.
# The retired provider-neutral stack is intentionally not included. The optional
services:
  # Durable automation plane. It is opt-in so the managed Supabase profile
  # remains compatible with deployments that already provide Redis externally.
  automation-redis:
    image: redis:7.4-alpine
    profiles: [automation]
    command: ["redis-server", "--appendonly", "yes", "--appendfsync", "everysec"]
    volumes:
      - automation-redis-data:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 5s
      timeout: 3s
      retries: 10
    restart: unless-stopped

  backend:
    build: ./backend
    env_file:
      - ./backend/.env
    environment:
      DEPLOYMENT_PROFILE: managed_supabase
      PORT: 8000
    ports:
      - "${BACKEND_PORT:-8000}:8000"
    healthcheck:
      test:
        - CMD-SHELL
        - python -c "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/readyz', timeout=3)"
      interval: 15s
      timeout: 5s
      retries: 5
      start_period: 20s
    restart: unless-stopped

  automation-worker:
    build: ./backend
    profiles: [automation]
    env_file:
      - ./backend/.env
    environment:
      DEPLOYMENT_PROFILE: managed_supabase
      CHATTY_JOB_QUEUE_URL: redis://automation-redis:6379/0
      CHATTY_WEBHOOK_STREAM: chatty:webhooks
      PORT: 8000
    command: ["python", "-m", "app.workers.webhook_worker"]
    depends_on:
      automation-redis:
        condition: service_healthy
    restart: unless-stopped

  campaign-scheduler:
    build: ./backend
    profiles: [automation]
    env_file:
      - ./backend/.env
    environment:
      DEPLOYMENT_PROFILE: managed_supabase
      CHATTY_JOB_QUEUE_URL: redis://automation-redis:6379/0
      CHATTY_WEBHOOK_STREAM: chatty:webhooks
      CHATTY_CAMPAIGN_SCHEDULER_INTERVAL: ${CHATTY_CAMPAIGN_SCHEDULER_INTERVAL:-30}
      PORT: 8000
    command: ["python", "-m", "app.workers.campaign_scheduler"]
    depends_on:
      automation-redis:
        condition: service_healthy
    restart: unless-stopped

  event-log-worker:
    build: ./backend
    profiles: [automation]
    env_file:
      - ./backend/.env
    environment:
      DEPLOYMENT_PROFILE: managed_supabase
      PORT: 8000
    command: ["python", "-m", "app.workers.event_log_worker"]
    restart: unless-stopped

  waha:
    image: devlikeappro/waha:latest
    profiles: [waha]
    restart: unless-stopped
    ports:
      - "${WAHA_PORT:-3001}:3000"
    environment:
      WHATSAPP_DEFAULT_ENGINE: NOWEB
      WAHA_ZIPPER: 1
      WAHA_DASHBOARD_ENABLED: "True"
    volumes:
      - waha-data:/app/.sessions

  frontend:
    build:
      context: ./frontend
      args:
        NEXT_PUBLIC_SUPABASE_URL: ${NEXT_PUBLIC_SUPABASE_URL:?Set NEXT_PUBLIC_SUPABASE_URL in .env}
        NEXT_PUBLIC_SUPABASE_ANON_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY:?Set NEXT_PUBLIC_SUPABASE_ANON_KEY in .env}
        NEXT_PUBLIC_BACKEND_URL: ${NEXT_PUBLIC_BACKEND_URL:-http://localhost:8000}
        NEXT_PUBLIC_LEMON_PORTAL_URL: ${NEXT_PUBLIC_LEMON_PORTAL_URL:-}
    env_file:
      - ./frontend/.env
    environment:
      NODE_ENV: production
      PORT: 3000
    ports:
      - "${FRONTEND_PORT:-3000}:3000"
    depends_on:
      backend:
        condition: service_healthy
    restart: unless-stopped

volumes:
  automation-redis-data:
  waha-data: