docker-compose.yml
Rama main · réplica de lectura del repositorio original.
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: