# documentation: https://www.chatwoot.com/docs/self-hosted/ # slogan: Delightful customer relationships at scale. # tags: chatwoot,chat,api,open,source,rails,redis,postgresql,sidekiq # logo: svgs/chatwoot.svg # port: 3000 services: rails: image: chatwoot/chatwoot:latest depends_on: - postgres - redis environment: - SERVICE_FQDN_CHATWOOT_3000 - SECRET_KEY_BASE=$SERVICE_PASSWORD_CHATWOOT - FRONTEND_URL=${SERVICE_FQDN_CHATWOOT} - DEFAULT_LOCALE=${CHATWOOT_DEFAULT_LOCALE} - FORCE_SSL=false - ENABLE_ACCOUNT_SIGNUP=false - REDIS_URL=redis://default@redis:6379 - REDIS_PASSWORD=$SERVICE_PASSWORD_REDIS - REDIS_OPENSSL_VERIFY_MODE=none - POSTGRES_DATABASE=chatwoot - POSTGRES_HOST=postgres - POSTGRES_USERNAME=$SERVICE_USER_POSTGRES_USER - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES - RAILS_MAX_THREADS=5 - NODE_ENV=production - RAILS_ENV=production - INSTALLATION_ENV=docker - MAILER_SENDER_EMAIL=${CHATWOOT_MAILER_SENDER_EMAIL} - SMTP_ADDRESS=${CHATWOOT_SMTP_ADDRESS} - SMTP_AUTHENTICATION=${CHATWOOT_SMTP_AUTHENTICATION} - SMTP_DOMAIN=${CHATWOOT_SMTP_DOMAIN} - SMTP_ENABLE_STARTTLS_AUTO=${CHATWOOT_SMTP_ENABLE_STARTTLS_AUTO} - SMTP_PORT=${CHATWOOT_SMTP_PORT} - SMTP_USERNAME=${CHATWOOT_SMTP_USERNAME} - SMTP_PASSWORD=${CHATWOOT_SMTP_PASSWORD} - ACTIVE_STORAGE_SERVICE=local entrypoint: docker/entrypoints/rails.sh command: sh -c "bundle exec rails db:chatwoot_prepare && bundle exec rails s -p 3000 -b 0.0.0.0" volumes: - rails-data:/app/storage healthcheck: test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:3000"] interval: 5s timeout: 20s retries: 10 sidekiq: image: chatwoot/chatwoot:latest depends_on: - postgres - redis environment: - SECRET_KEY_BASE=$SERVICE_PASSWORD_CHATWOOT - FRONTEND_URL=${SERVICE_FQDN_CHATWOOT} - DEFAULT_LOCALE=${CHATWOOT_DEFAULT_LOCALE} - FORCE_SSL=false - ENABLE_ACCOUNT_SIGNUP=false - REDIS_URL=redis://default@redis:6379 - REDIS_PASSWORD=$SERVICE_PASSWORD_REDIS - REDIS_OPENSSL_VERIFY_MODE=none - POSTGRES_DATABASE=chatwoot - POSTGRES_HOST=postgres - POSTGRES_USERNAME=$SERVICE_USER_POSTGRES_USER - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES - RAILS_MAX_THREADS=5 - NODE_ENV=production - RAILS_ENV=production - INSTALLATION_ENV=docker - MAILER_SENDER_EMAIL=${CHATWOOT_MAILER_SENDER_EMAIL} - SMTP_ADDRESS=${CHATWOOT_SMTP_ADDRESS} - SMTP_AUTHENTICATION=${CHATWOOT_SMTP_AUTHENTICATION} - SMTP_DOMAIN=${CHATWOOT_SMTP_DOMAIN} - SMTP_ENABLE_STARTTLS_AUTO=${CHATWOOT_SMTP_ENABLE_STARTTLS_AUTO} - SMTP_PORT=${CHATWOOT_SMTP_PORT} - SMTP_USERNAME=${CHATWOOT_SMTP_USERNAME} - SMTP_PASSWORD=${CHATWOOT_SMTP_PASSWORD} - ACTIVE_STORAGE_SERVICE=local command: ['bundle', 'exec', 'sidekiq', '-C', 'config/sidekiq.yml'] volumes: - sidekiq-data:/app/storage healthcheck: test: ["CMD-SHELL", "bundle exec rails runner 'puts Sidekiq.redis(&:info)' > /dev/null 2>&1"] interval: 30s timeout: 10s retries: 3 postgres: image: postgres:12 restart: always volumes: - postgres-data:/var/lib/postgresql/data environment: - POSTGRES_DB=chatwoot - POSTGRES_USER=$SERVICE_USER_POSTGRES_USER - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES healthcheck: test: ["CMD-SHELL", "pg_isready -U $SERVICE_USER_POSTGRES_USER -d chatwoot -h 127.0.0.1"] interval: 30s timeout: 10s retries: 5 redis: image: redis:alpine restart: always command: ["sh", "-c", "redis-server --requirepass \"$SERVICE_PASSWORD_REDIS\""] volumes: - redis-data:/data healthcheck: test: ["CMD", "redis-cli", "-a", "$SERVICE_PASSWORD_REDIS", "PING"] interval: 30s timeout: 10s retries: 5