Chore: Review docker issues (#787)
* Fix docker issues Addresses: #701 * Add action cable configurations Co-authored-by: Sony Mathew <ynos1234@gmail.com>
This commit is contained in:
parent
0b65526b85
commit
0690d3191d
5 changed files with 51 additions and 47 deletions
16
.env.example
16
.env.example
|
@ -1,12 +1,17 @@
|
||||||
SECRET_KEY_BASE=
|
# Used to verify the integrity of signed cookies. so ensure a secure value is set
|
||||||
|
SECRET_KEY_BASE=replace_with_lengthy_secure_hex
|
||||||
|
|
||||||
|
# Replace with the URL you are planning to use for your app
|
||||||
|
FRONTEND_URL=http://0.0.0.0:3000
|
||||||
|
|
||||||
# Force all access to the app over SSL, default is set to false
|
# Force all access to the app over SSL, default is set to false
|
||||||
FORCE_SSL=
|
FORCE_SSL=false
|
||||||
|
|
||||||
# This lets you control new sign ups on your chatwoot installation
|
# This lets you control new sign ups on your chatwoot installation
|
||||||
# true : default option, allows sign ups
|
# true : default option, allows sign ups
|
||||||
# false : disables all the end points related to sign ups
|
# false : disables all the end points related to sign ups
|
||||||
# api_only: disables the UI for signup, but you can create sign ups via the account apis
|
# api_only: disables the UI for signup, but you can create sign ups via the account apis
|
||||||
ENABLE_ACCOUNT_SIGNUP=
|
ENABLE_ACCOUNT_SIGNUP=true
|
||||||
|
|
||||||
# Redis config
|
# Redis config
|
||||||
REDIS_URL=redis://redis:6379
|
REDIS_URL=redis://redis:6379
|
||||||
|
@ -41,8 +46,7 @@ RAILS_INBOUND_EMAIL_PASSWORD=
|
||||||
MAILGUN_INGRESS_SIGNING_KEY=
|
MAILGUN_INGRESS_SIGNING_KEY=
|
||||||
MANDRILL_INGRESS_API_KEY=
|
MANDRILL_INGRESS_API_KEY=
|
||||||
|
|
||||||
# Misc
|
# Storage
|
||||||
FRONTEND_URL=http://0.0.0.0:3000
|
|
||||||
ACTIVE_STORAGE_SERVICE=local
|
ACTIVE_STORAGE_SERVICE=local
|
||||||
|
|
||||||
# Amazon S3
|
# Amazon S3
|
||||||
|
@ -55,6 +59,8 @@ AWS_REGION=
|
||||||
SENTRY_DSN=
|
SENTRY_DSN=
|
||||||
|
|
||||||
# Log settings
|
# Log settings
|
||||||
|
# Disable if you want to write logs to a file
|
||||||
|
RAILS_LOG_TO_STDOUT=true
|
||||||
LOG_LEVEL=info
|
LOG_LEVEL=info
|
||||||
LOG_SIZE=500
|
LOG_SIZE=500
|
||||||
|
|
||||||
|
|
|
@ -32,12 +32,15 @@ Rails.application.configure do
|
||||||
# Apache or NGINX already handles this.
|
# Apache or NGINX already handles this.
|
||||||
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
|
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
|
||||||
|
|
||||||
# Compress CSS using a preprocessor.
|
# Compress JavaScripts and CSS.
|
||||||
|
# config.assets.js_compressor = :uglifier
|
||||||
# config.assets.css_compressor = :sass
|
# config.assets.css_compressor = :sass
|
||||||
|
|
||||||
# Do not fallback to assets pipeline if a precompiled asset is missed.
|
# Do not fallback to assets pipeline if a precompiled asset is missed.
|
||||||
config.assets.compile = false
|
config.assets.compile = false
|
||||||
|
|
||||||
|
# `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
|
||||||
|
|
||||||
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
||||||
# config.action_controller.asset_host = 'http://assets.example.com'
|
# config.action_controller.asset_host = 'http://assets.example.com'
|
||||||
|
|
||||||
|
@ -45,13 +48,21 @@ Rails.application.configure do
|
||||||
# config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
|
# config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
|
||||||
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
|
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
|
||||||
|
|
||||||
# Store uploaded files on the local file system (see config/storage.yml for options).
|
# Store uploaded files on the local file system (see config/storage.yml for options)
|
||||||
config.active_storage.service = ENV.fetch('ACTIVE_STORAGE_SERVICE', 'local').to_sym
|
config.active_storage.service = ENV.fetch('ACTIVE_STORAGE_SERVICE', 'local').to_sym
|
||||||
|
|
||||||
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
# Mount Action Cable outside main process or domain
|
||||||
config.force_ssl = ENV.fetch('FORCE_SSL', false)
|
# config.action_cable.mount_path = nil
|
||||||
|
# config.action_cable.url = 'wss://example.com/cable'
|
||||||
|
if ENV['FRONTEND_URL'].present?
|
||||||
|
config.action_cable.allowed_request_origins = [ENV['FRONTEND_URL'], %r{https?://#{URI.parse(ENV['FRONTEND_URL']).host}(:[0-9]+)?}]
|
||||||
|
end
|
||||||
|
|
||||||
# customize using the environment variables
|
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
||||||
|
config.force_ssl = ActiveModel::Type::Boolean.new.cast(ENV.fetch('FORCE_SSL', false))
|
||||||
|
|
||||||
|
# Use the lowest log level to ensure availability of diagnostic information
|
||||||
|
# when problems arise.
|
||||||
config.log_level = ENV.fetch('LOG_LEVEL', 'info').to_sym
|
config.log_level = ENV.fetch('LOG_LEVEL', 'info').to_sym
|
||||||
|
|
||||||
# Prepend all log lines with the following tags.
|
# Prepend all log lines with the following tags.
|
||||||
|
@ -60,22 +71,11 @@ Rails.application.configure do
|
||||||
# Use a different cache store in production.
|
# Use a different cache store in production.
|
||||||
# config.cache_store = :mem_cache_store
|
# config.cache_store = :mem_cache_store
|
||||||
|
|
||||||
# Use a real queuing backend for Active Job (and separate queues per environment).
|
# Use a real queuing backend for Active Job (and separate queues per environment)
|
||||||
# config.active_job.queue_adapter = :resque
|
config.active_job.queue_adapter = :sidekiq
|
||||||
# config.active_job.queue_name_prefix = "chatwoot_production"
|
# config.active_job.queue_name_prefix = "Chatwoot_#{Rails.env}"
|
||||||
|
|
||||||
config.action_mailer.perform_caching = false
|
config.action_mailer.perform_caching = false
|
||||||
config.action_mailer.default_url_options = { host: ENV['FRONTEND_URL'] }
|
|
||||||
config.action_mailer.smtp_settings = {
|
|
||||||
address: ENV['SMTP_ADDRESS'],
|
|
||||||
port: ENV['SMTP_PORT'] || 587,
|
|
||||||
user_name: ENV['SMTP_USERNAME'],
|
|
||||||
password: ENV['SMTP_PASSWORD'],
|
|
||||||
authentication: :login,
|
|
||||||
enable_starttls_auto: true
|
|
||||||
}
|
|
||||||
|
|
||||||
Rails.application.routes.default_url_options = { host: ENV['FRONTEND_URL'] }
|
|
||||||
|
|
||||||
# Ignore bad email addresses and do not raise email delivery errors.
|
# Ignore bad email addresses and do not raise email delivery errors.
|
||||||
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
|
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
|
||||||
|
@ -84,7 +84,6 @@ Rails.application.configure do
|
||||||
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
||||||
# the I18n.default_locale when a translation cannot be found).
|
# the I18n.default_locale when a translation cannot be found).
|
||||||
config.i18n.fallbacks = true
|
config.i18n.fallbacks = true
|
||||||
config.active_job.queue_adapter = :sidekiq
|
|
||||||
|
|
||||||
# Send deprecation notices to registered listeners.
|
# Send deprecation notices to registered listeners.
|
||||||
config.active_support.deprecation = :notify
|
config.active_support.deprecation = :notify
|
||||||
|
@ -93,6 +92,9 @@ Rails.application.configure do
|
||||||
config.log_formatter = ::Logger::Formatter.new
|
config.log_formatter = ::Logger::Formatter.new
|
||||||
|
|
||||||
# Use a different logger for distributed setups.
|
# Use a different logger for distributed setups.
|
||||||
|
# require 'syslog/logger'
|
||||||
|
# config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')
|
||||||
|
|
||||||
if ENV['RAILS_LOG_TO_STDOUT'].present?
|
if ENV['RAILS_LOG_TO_STDOUT'].present?
|
||||||
logger = ActiveSupport::Logger.new(STDOUT)
|
logger = ActiveSupport::Logger.new(STDOUT)
|
||||||
logger.formatter = config.log_formatter
|
logger.formatter = config.log_formatter
|
||||||
|
@ -108,24 +110,16 @@ Rails.application.configure do
|
||||||
# Do not dump schema after migrations.
|
# Do not dump schema after migrations.
|
||||||
config.active_record.dump_schema_after_migration = false
|
config.active_record.dump_schema_after_migration = false
|
||||||
|
|
||||||
# Inserts middleware to perform automatic connection switching.
|
# Chatwoot production settings
|
||||||
# The `database_selector` hash is used to pass options to the DatabaseSelector
|
config.action_mailer.default_url_options = { host: ENV['FRONTEND_URL'] }
|
||||||
# middleware. The `delay` is used to determine how long to wait after a write
|
config.action_mailer.smtp_settings = {
|
||||||
# to send a subsequent read to the primary.
|
address: ENV['SMTP_ADDRESS'],
|
||||||
#
|
port: ENV['SMTP_PORT'] || 587,
|
||||||
# The `database_resolver` class is used by the middleware to determine which
|
user_name: ENV['SMTP_USERNAME'],
|
||||||
# database is appropriate to use based on the time delay.
|
password: ENV['SMTP_PASSWORD'],
|
||||||
#
|
authentication: :login,
|
||||||
# The `database_resolver_context` class is used by the middleware to set
|
enable_starttls_auto: true
|
||||||
# timestamps for the last write to the primary. The resolver uses the context
|
}
|
||||||
# class timestamps to determine how long to wait before reading from the
|
|
||||||
# replica.
|
Rails.application.routes.default_url_options = { host: ENV['FRONTEND_URL'] }
|
||||||
#
|
|
||||||
# By default Rails will store a last write timestamp in the session. The
|
|
||||||
# DatabaseSelector middleware is designed as such you can define your own
|
|
||||||
# strategy for connection switching and pass that into the middleware through
|
|
||||||
# these configuration options.
|
|
||||||
# config.active_record.database_selector = { delay: 2.seconds }
|
|
||||||
# config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver
|
|
||||||
# config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -40,7 +40,7 @@ Rails.application.configure do
|
||||||
# config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]
|
# config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]
|
||||||
|
|
||||||
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
||||||
config.force_ssl = ENV.fetch('FORCE_SSL', false)
|
config.force_ssl = ActiveModel::Type::Boolean.new.cast(ENV.fetch('FORCE_SSL', false))
|
||||||
|
|
||||||
# customize using the environment variables
|
# customize using the environment variables
|
||||||
config.log_level = ENV.fetch('LOG_LEVEL', 'info').to_sym
|
config.log_level = ENV.fetch('LOG_LEVEL', 'info').to_sym
|
||||||
|
|
|
@ -87,4 +87,8 @@ RUN rm -rf /gems/ruby/2.7.0/cache/*.gem \
|
||||||
&& find /gems/ruby/2.7.0/gems/ -name "*.c" -delete \
|
&& find /gems/ruby/2.7.0/gems/ -name "*.c" -delete \
|
||||||
&& find /gems/ruby/2.7.0/gems/ -name "*.o" -delete
|
&& find /gems/ruby/2.7.0/gems/ -name "*.o" -delete
|
||||||
|
|
||||||
|
# creating a log directory so that image wont fail when RAILS_LOG_TO_STDOUT is false
|
||||||
|
# https://github.com/chatwoot/chatwoot/issues/701
|
||||||
|
RUN mkdir -p /app/log
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
|
@ -92,7 +92,7 @@ docker pull chatwoot/chatwoot
|
||||||
You can create an image yourselves by running the following command on the root directory.
|
You can create an image yourselves by running the following command on the root directory.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker image build -f docker/Dockerfile .
|
docker-compose -f docker-compose.production.yaml build
|
||||||
```
|
```
|
||||||
|
|
||||||
This will build the image which you can depoy in Kubernetes (GCP, Openshift, AWS, Azure or anywhere), Amazon ECS or Docker Swarm. You can tag this image and push this image to docker registry of your choice.
|
This will build the image which you can depoy in Kubernetes (GCP, Openshift, AWS, Azure or anywhere), Amazon ECS or Docker Swarm. You can tag this image and push this image to docker registry of your choice.
|
||||||
|
|
Loading…
Reference in a new issue