version: '3' services: rails: image: 'ghcr.io/fazer-ai/chatwoot:latest' pull_policy: always volumes: - 'storage:/app/storage' depends_on: - postgres - redis environment: - NODE_ENV=production - RAILS_ENV=production - INSTALLATION_ENV=docker - FRONTEND_URL=http://rails:3000 - REDIS_URL=redis://redis:6379 - DATABASE_URL=postgresql://postgres:postgres@postgres:5432/chatwoot_production - SECRET_KEY_BASE=${SECRET_KEY_BASE} - REDIS_PASSWORD=${REDIS_PASSWORD} - BAILEYS_PROVIDER_DEFAULT_CLIENT_NAME=${BAILEYS_PROVIDER_DEFAULT_CLIENT_NAME} - BAILEYS_PROVIDER_DEFAULT_URL=http://baileys-api:3025 - BAILEYS_PROVIDER_DEFAULT_API_KEY=${BAILEYS_PROVIDER_DEFAULT_API_KEY} entrypoint: docker/entrypoints/rails.sh command: - bundle - exec - rails - s - '-p' - '3000' - '-b' - 0.0.0.0 restart: always post_start: - command: - bundle - exec - rails - db:chatwoot_prepare healthcheck: test: - CMD-SHELL - 'wget -qO- http://127.0.0.1:3000/' interval: 60s timeout: 20s retries: 10 sidekiq: image: 'ghcr.io/fazer-ai/chatwoot:latest' pull_policy: always volumes: - 'storage:/app/storage' depends_on: - postgres - redis environment: - NODE_ENV=production - RAILS_ENV=production - INSTALLATION_ENV=docker - REDIS_URL=redis://redis:6379 - DATABASE_URL=postgresql://postgres:postgres@postgres:5432/chatwoot_production - SECRET_KEY_BASE=${SECRET_KEY_BASE} - REDIS_PASSWORD=${REDIS_PASSWORD} command: - bundle - exec - sidekiq - '-C' - config/sidekiq.yml restart: always healthcheck: test: - CMD-SHELL - 'ps aux | grep [s]idekiq' interval: 20s timeout: 20s retries: 10 baileys-api: image: 'ghcr.io/fazer-ai/baileys-api:latest' pull_policy: always volumes: - 'storage:/app/storage' depends_on: - rails - sidekiq - redis environment: - NODE_ENV=production - REDIS_URL=redis://redis:6379 - REDIS_PASSWORD=${REDIS_PASSWORD} - LOG_LEVEL=${LOG_LEVEL:-debug} - BAILEYS_LOG_LEVEL=${BAILEYS_LOG_LEVEL:-error} command: - bun - start restart: always post_start: - command: - bun - manage-api-keys - create - user - ${BAILEYS_PROVIDER_DEFAULT_API_KEY} healthcheck: test: - CMD-SHELL - "wget --header='x-api-key: ${BAILEYS_PROVIDER_DEFAULT_API_KEY}' -qO- http://localhost:3025/status" interval: 20s timeout: 20s retries: 10 postgres: image: 'pgvector/pgvector:pg16' restart: always volumes: - 'postgres:/var/lib/postgresql/data' environment: - POSTGRES_DB=chatwoot_production - POSTGRES_USERNAME=postgres - POSTGRES_PASSWORD=postgres healthcheck: test: - CMD-SHELL - 'pg_isready -h localhost -p 5432 -U postgres' interval: 20s timeout: 20s retries: 10 redis: image: 'redis:alpine' restart: always command: - sh - '-c' - 'redis-server --requirepass "$REDIS_PASSWORD"' volumes: - 'redis:/data' environment: - REDIS_PASSWORD=${REDIS_PASSWORD} healthcheck: test: - CMD-SHELL - 'redis-cli -h localhost -p 6379 -a $REDIS_PASSWORD ping' interval: 20s timeout: 20s retries: 10