# 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: chatwoot: 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=${FORCE_SSL:-false} - ENABLE_ACCOUNT_SIGNUP=${ENABLE_ACCOUNT_SIGNUP:-false} - REDIS_URL=redis://default@redis:6379 - REDIS_PASSWORD=$SERVICE_PASSWORD_REDIS - REDIS_OPENSSL_VERIFY_MODE=${REDIS_OPENSSL_VERIFY_MODE:-none} - POSTGRES_DATABASE=${POSTGRES_DB:-chatwoot} - POSTGRES_HOST=${POSTGRES_HOST:-postgres} - POSTGRES_USERNAME=$SERVICE_USER_POSTGRES - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES - RAILS_MAX_THREADS=${RAILS_MAX_THREADS:-5} - NODE_ENV=${NODE_ENV:-production} - RAILS_ENV=${RAILS_ENV:-production} - INSTALLATION_ENV=${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=${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=${FORCE_SSL:-false} - ENABLE_ACCOUNT_SIGNUP=${ENABLE_ACCOUNT_SIGNUP:-false} - REDIS_URL=redis://default@redis:6379 - REDIS_PASSWORD=$SERVICE_PASSWORD_REDIS - REDIS_OPENSSL_VERIFY_MODE=${REDIS_OPENSSL_VERIFY_MODE:-none} - POSTGRES_DATABASE=${POSTGRES_DB:-chatwoot} - POSTGRES_HOST=${POSTGRES_HOST:-postgres} - POSTGRES_USERNAME=$SERVICE_USER_POSTGRES - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES - RAILS_MAX_THREADS=${RAILS_MAX_THREADS:-5} - NODE_ENV=${NODE_ENV:-production} - RAILS_ENV=${RAILS_ENV:-production} - INSTALLATION_ENV=${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=${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=${POSTGRES_DB:-chatwoot} - POSTGRES_USER=$SERVICE_USER_POSTGRES - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES healthcheck: test: ["CMD-SHELL", "pg_isready -U $SERVICE_USER_POSTGRES -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