From 4055279270beae1078de4c15a694a259b8bdb27a Mon Sep 17 00:00:00 2001 From: Angel Aviel Domaoan Date: Fri, 28 Jan 2022 05:40:48 +0000 Subject: [PATCH] Fix production deployment --- .env.sample | 8 ++++++++ .gitignore | 3 +++ Procfile-prod | 1 + config/application.yml | 2 ++ config/deploy.rb | 25 +++++++++++------------ docker-compose.production.yml | 32 +++++++++++++++++++----------- lib/tasks/assets_non_digested.rake | 16 +++++++++++++++ 7 files changed, 62 insertions(+), 25 deletions(-) create mode 100644 .env.sample create mode 100644 Procfile-prod create mode 100644 lib/tasks/assets_non_digested.rake diff --git a/.env.sample b/.env.sample new file mode 100644 index 0000000..a8826ef --- /dev/null +++ b/.env.sample @@ -0,0 +1,8 @@ +DATA_DIR_PATH= + +WEB_RESTART_MODE= +WEB_RAILS_ENV= +WEB_RAILS_MASTER_KEY= +WEB_RAILS_PORT= + +SOLR_PORT= diff --git a/.gitignore b/.gitignore index b2bd88a..74dfbc7 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,6 @@ yarn-debug.log* .yarn-integrity db/schema.rb + +.env* +!.env.sample diff --git a/Procfile-prod b/Procfile-prod new file mode 100644 index 0000000..532915e --- /dev/null +++ b/Procfile-prod @@ -0,0 +1 @@ +web: rm tmp/pids/server.pid && rails s diff --git a/config/application.yml b/config/application.yml index 1ce742a..bb95687 100644 --- a/config/application.yml +++ b/config/application.yml @@ -7,3 +7,5 @@ SENTRY_DSN: '<%= Rails.application.credentials.SENTRY_DSN %>' REPORT_URI_URL: '<%= Rails.application.credentials.REPORT_URI_URL %>' RECAPTCHA_ENABLED: '<%= Rails.application.credentials.RECAPTCHA_ENABLED %>' + +RAILS_SERVE_STATIC_FILES: "true" diff --git a/config/deploy.rb b/config/deploy.rb index 8056ad0..9e84bac 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -19,11 +19,10 @@ set :bundle_flags, "--deployment --quiet" set :docker_role, :web set :docker_compose, true -set :docker_compose_up_services, "--remove-orphans --scale web=3 load_balancer" +set :docker_compose_up_services, "--force-recreate --scale web=3 load_balancer" set :docker_compose_project_name, -> { fetch(:application) } set :docker_assets_precompile_command, -> { ["bundle exec rake assets:precompile", - "bundle exec rake assets:non_digested", "bundle exec rake assets:clean"].join(" && ") } set :docker_migrate_command, -> { "bundle exec rake db:migrate" } @@ -39,17 +38,17 @@ namespace :deploy do end end - desc "Load ENV on figaro" - before :starting, :set_figaro_env do - run_locally do - opts = { - environment: fetch(:rack_env, fetch(:rails_env, "production")), - path: "config/application.yml" - } - Figaro.application = Figaro::Application.new(opts) - Figaro.load - end - end + # desc "Load ENV on figaro" + # before :starting, :set_figaro_env do + # run_locally do + # opts = { + # environment: fetch(:rack_env, fetch(:rails_env, "production")), + # path: "config/application.yml" + # } + # Figaro.application = Figaro::Application.new(opts) + # Figaro.load + # end + # end end namespace :docker do diff --git a/docker-compose.production.yml b/docker-compose.production.yml index a95c819..6f95a09 100644 --- a/docker-compose.production.yml +++ b/docker-compose.production.yml @@ -4,29 +4,37 @@ services: image: busybox volumes: - .:/var/www - - ./../../shared/bundle:/bundle - - ./../../shared/.bundle:/var/www/.bundle - - ./../../shared/public/assets:/var/www/public/assets - - ./../../shared/public/system:/var/www/public/system - - ./../../shared/storage:/var/www/storage - - ./../../shared/tmp:/var/www/tmp - - ./../../shared/tmp/pids:/var/www/tmp/pids - - ./../../shared/vendor/bundle:/var/www/vendor/bundle - - ./../../shared/node_modules:/var/www/node_modules + - ${DATA_DIR_PATH}/bundle:/bundle + - ${DATA_DIR_PATH}/.bundle:/var/www/.bundle + - ${DATA_DIR_PATH}/public/assets:/var/www/public/assets + - ${DATA_DIR_PATH}/public/packs:/var/www/public/packs + - ${DATA_DIR_PATH}/public/system:/var/www/public/system + - ${DATA_DIR_PATH}/storage:/var/www/storage + - ${DATA_DIR_PATH}/tmp:/var/www/tmp + - ${DATA_DIR_PATH}/vendor/bundle:/var/www/vendor/bundle + - ${DATA_DIR_PATH}/node_modules:/var/www/node_modules + load_balancer: + image: dockercloud/haproxy + links: + - web + volumes: + - /var/run/docker.sock:/var/run/docker.sock + ports: + - "${WEB_RAILS_PORT}:80" solr: image: tenshiamd/solr:5-alpine ports: - ${SOLR_PORT}:8983 volumes: - - ./../../shared/solr:/var/lib/solr + - ${DATA_DIR_PATH}/solr:/var/lib/solr web: restart: ${WEB_RESTART_MODE} - image: tenshiamd/ruby:2.6-alpine + image: tenshiamd/ruby:2.7-alpine command: | bash -c 'bash -s <