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:
Sojan Jose 2020-04-30 21:32:34 +05:30 committed by GitHub
parent 0b65526b85
commit 0690d3191d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 51 additions and 47 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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.