diff --git a/Dockerfile b/Dockerfile index 544e6bd9..bbfeaf96 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,34 +1,60 @@ -FROM ruby:2.5 +FROM ruby:2.5.1-alpine AS base -# Install app dependencies. -RUN apt-get update -qq && apt-get install -y build-essential libpq-dev curl - -ADD https://dl.yarnpkg.com/debian/pubkey.gpg /tmp/yarn-pubkey.gpg - -RUN apt-key add /tmp/yarn-pubkey.gpg && rm /tmp/yarn-pubkey.gpg && \ -echo 'deb http://dl.yarnpkg.com/debian/ stable main' > /etc/apt/sources.list.d/yarn.list && \ -curl -sL https://deb.nodesource.com/setup_10.x | bash - && \ -apt-get update && apt-get install -y nodejs yarn - -# Set an environment variable for the install location. -ENV RAILS_ROOT /usr/src/app +# Set a variable for the install location. +ARG RAILS_ROOT=/usr/src/app +# Set Rails environment. +ENV RAILS_ENV production +ENV BUNDLE_APP_CONFIG="$RAILS_ROOT/.bundle" # Make the directory and set as working. RUN mkdir -p $RAILS_ROOT WORKDIR $RAILS_ROOT -# Set Rails environment. -ENV RAILS_ENV production +ARG BUILD_PACKAGES="build-base curl-dev git" +ARG DEV_PACKAGES="postgresql-dev sqlite-libs sqlite-dev yaml-dev zlib-dev nodejs yarn" +ARG RUBY_PACKAGES="tzdata" + +# Install app dependencies. +RUN apk update \ + && apk upgrade \ + && apk add --update --no-cache $BUILD_PACKAGES $DEV_PACKAGES $RUBY_PACKAGES COPY Gemfile* ./ -RUN bundle install --without development test --deployment --clean +COPY Gemfile Gemfile.lock $RAILS_ROOT/ + +RUN bundle config --global frozen 1 \ + && bundle install --deployment --without development:test:assets -j4 --path=vendor/bundle \ + && rm -rf vendor/bundle/ruby/2.5.0/cache/*.gem \ + && find vendor/bundle/ruby/2.5.0/gems/ -name "*.c" -delete \ + && find vendor/bundle/ruby/2.5.0/gems/ -name "*.o" -delete # Adding project files. COPY . . -# Precompile assets -RUN SECRET_KEY_BASE="$(bundle exec rake secret)" bundle exec rake assets:clean -RUN SECRET_KEY_BASE="$(bundle exec rake secret)" bundle exec rake assets:precompile +RUN SECRET_KEY_BASE="1" bin/rails assets:precompile + +# Remove folders not needed in resulting image +RUN rm -rf tmp/cache app/assets vendor/assets spec + +############### Build step done ############### + +FROM ruby:2.5.1-alpine + +# Set a variable for the install location. +ARG RAILS_ROOT=/usr/src/app +ARG PACKAGES="tzdata postgresql-client sqlite-libs nodejs bash" + +ENV RAILS_ENV=production +ENV BUNDLE_APP_CONFIG="$RAILS_ROOT/.bundle" + +WORKDIR $RAILS_ROOT + +RUN apk update \ + && apk upgrade \ + && apk add --update --no-cache $PACKAGES + + +COPY --from=base $RAILS_ROOT $RAILS_ROOT # Expose port 80. EXPOSE 80 diff --git a/Gemfile b/Gemfile index b69213de..ab2fbb19 100644 --- a/Gemfile +++ b/Gemfile @@ -23,7 +23,7 @@ gem 'uglifier', '>= 1.3.0' gem 'coffee-rails', '~> 4.2' # See https://github.com/rails/execjs#readme for more supported runtimes -gem 'mini_racer', platforms: :ruby +# gem 'mini_racer', platforms: :ruby # Use jquery as the JavaScript library gem 'jquery-rails', '~> 4.3.3' @@ -121,7 +121,7 @@ end gem 'remote_syslog_logger' # Windows does not include zoneinfo files, so bundle the tzinfo-data gem -gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] +gem 'tzinfo-data' gem 'coveralls', require: false diff --git a/Gemfile.lock b/Gemfile.lock index 1a651c4b..e29d0f0b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -153,7 +153,6 @@ GEM railties (>= 3.2.16) json (2.2.0) jwt (2.2.1) - libv8 (7.3.492.27.1) listen (3.0.8) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) @@ -173,8 +172,6 @@ GEM mimemagic (0.3.3) mini_mime (1.0.2) mini_portile2 (2.4.0) - mini_racer (0.2.6) - libv8 (>= 6.9.411) minitest (5.11.3) msgpack (1.3.0) multi_json (1.13.1) @@ -326,6 +323,8 @@ GEM turbolinks-source (5.2.0) tzinfo (1.2.5) thread_safe (~> 0.1) + tzinfo-data (1.2019.3) + tzinfo (>= 1.0.0) uglifier (4.1.20) execjs (>= 0.3.0, < 3) unicode-display_width (1.6.0) @@ -369,7 +368,6 @@ DEPENDENCIES jquery-ui-rails listen (~> 3.0.5) lograge - mini_racer net-ldap omniauth omniauth-bn-launcher! diff --git a/app/controllers/themes_controller.rb b/app/controllers/themes_controller.rb index f5c32eb2..79132b78 100644 --- a/app/controllers/themes_controller.rb +++ b/app/controllers/themes_controller.rb @@ -26,7 +26,7 @@ class ThemesController < ApplicationController lighten_color = @settings.get_value("Primary Color Lighten") || Rails.configuration.primary_color_lighten_default darken_color = @settings.get_value("Primary Color Darken") || Rails.configuration.primary_color_darken_default - file_name = Rails.root.join('app', 'assets', 'stylesheets', 'utilities', '_primary_themes.scss') + file_name = Rails.root.join('lib', 'assets', '_primary_themes.scss') @file_contents = File.read(file_name) # Include the variables and covert scss file to css diff --git a/bin/start b/bin/start index c04c5cab..80a1b25d 100755 --- a/bin/start +++ b/bin/start @@ -19,6 +19,4 @@ else bundle exec rake db:schema:load fi -bundle exec rake assets:precompile - exec bundle exec puma -C config/puma.rb diff --git a/config/environments/production.rb b/config/environments/production.rb index f918301b..7eb74555 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -143,5 +143,5 @@ Rails.application.configure do config.active_record.dump_schema_after_migration = false # Set the relative url root for deployment to a subdirectory. - config.relative_url_root = ENV['RELATIVE_URL_ROOT'] || "/b" if ENV['RELATIVE_URL_ROOT'] != "/" + config.relative_url_root = ENV['RELATIVE_URL_ROOT'].present? ? ENV['RELATIVE_URL_ROOT'] : "/b" end diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb index 89011c0e..781516d9 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -13,4 +13,4 @@ Rails.application.config.assets.version = '1.0' # Precompile additional assets. # application.js, application.css, and all non-JS/CSS in the app/assets # folder are already added. -Rails.application.config.assets.precompile += %w(pickr.min.js monolith.min.scss) +Rails.application.config.assets.precompile += %w(_primary_theme.scss pickr.min.js monolith.min.scss) diff --git a/app/assets/stylesheets/utilities/_primary_themes.scss b/lib/assets/_primary_themes.scss similarity index 100% rename from app/assets/stylesheets/utilities/_primary_themes.scss rename to lib/assets/_primary_themes.scss