Browse Source

Fix production deployment

pull/7/head
Angel Aviel Domaoan 4 years ago committed by Angel Aviel Domaoan
parent
commit
8d226e8f7e
  1. 8
      .env.sample
  2. 3
      .gitignore
  3. 1
      Procfile-prod
  4. 2
      config/application.yml
  5. 25
      config/deploy.rb
  6. 32
      docker-compose.production.yml
  7. 16
      lib/tasks/assets_non_digested.rake

8
.env.sample

@ -0,0 +1,8 @@
DATA_DIR_PATH=
WEB_RESTART_MODE=
WEB_RAILS_ENV=
WEB_RAILS_MASTER_KEY=
WEB_RAILS_PORT=
SOLR_PORT=

3
.gitignore vendored

@ -40,3 +40,6 @@ yarn-debug.log*
.yarn-integrity
db/schema.rb
.env*
!.env.sample

1
Procfile-prod

@ -0,0 +1 @@
web: rm tmp/pids/server.pid && rails s

2
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"

25
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

32
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 <<EOF
bundle check || bundle install
bundle exec rake db:migrate
bundle exec foreman start -f Procfile
bundle exec foreman start -f Procfile-prod
EOF'
volumes_from:
- data

16
lib/tasks/assets_non_digested.rake

@ -0,0 +1,16 @@
namespace :assets do
task non_digested: :environment do
assets = Dir.glob(Rails.root.join("public", "assets", "ckeditor", "**", "*"))
regex = /(-{1}[a-z0-9]{32}*\.{1}){1}/
assets.each do |file|
next if File.directory?(file) || file !~ regex
source = file.split("/")
source.push(source.pop.gsub(regex, "."))
non_digested = File.join(source)
FileUtils.cp(file, non_digested)
end
FileUtils.cp("app/assets/javascripts/ckeditor/config.js", "public/assets/ckeditor/")
end
end
Loading…
Cancel
Save