diff --git a/.dockerignore b/.dockerignore index fc3c5ba6439..b45ad25aa2b 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,12 +1,21 @@ .dockerignore .git +.github .gitignore Dockerfile Jenkinsfile Procfile README.md +app.json +coverage docs +features log +node_modules +package.json +script spec +startup.sh test tmp +yarn.lock diff --git a/Dockerfile b/Dockerfile index bb387f8d44e..dde813008b4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,29 +1,26 @@ -ARG base_image=ghcr.io/alphagov/govuk-ruby-base:3.1.2 -ARG builder_image=ghcr.io/alphagov/govuk-ruby-builder:3.1.2 +ARG ruby_version=3.1.2 +ARG base_image=ghcr.io/alphagov/govuk-ruby-base:$ruby_version +ARG builder_image=ghcr.io/alphagov/govuk-ruby-builder:$ruby_version -FROM $builder_image AS builder -ENV BUNDLE_WITHOUT="development test webkit" +FROM $builder_image AS builder -RUN mkdir -p /app && ln -fs /tmp /app/tmp && ln -fs /tmp /home/app -WORKDIR /app -COPY Gemfile Gemfile.lock .ruby-version /app/ +WORKDIR $APP_HOME +COPY Gemfile* .ruby-version ./ RUN bundle install -COPY . /app -RUN bundle exec rails assets:precompile && rm -fr /app/log +COPY . . +RUN bootsnap precompile --gemfile . +RUN rails assets:precompile && rm -fr log FROM $base_image -ENV GOVUK_APP_NAME=smartanswers +ENV GOVUK_APP_NAME=smart-answers -RUN mkdir -p /app && ln -fs /tmp /app/tmp && ln -fs /tmp /home/app -WORKDIR /app - -COPY --from=builder /usr/bin/node* /usr/bin/ -COPY --from=builder /usr/local/bundle/ /usr/local/bundle/ -COPY --from=builder /app ./ +WORKDIR $APP_HOME +COPY --from=builder $BUNDLE_PATH $BUNDLE_PATH +COPY --from=builder $BOOTSNAP_CACHE_DIR $BOOTSNAP_CACHE_DIR +COPY --from=builder $APP_HOME . USER app - -CMD ["bundle", "exec", "puma"] +CMD ["puma"] diff --git a/Gemfile b/Gemfile index 3cbc4d79062..015a65a0e83 100644 --- a/Gemfile +++ b/Gemfile @@ -5,6 +5,7 @@ ruby File.read(".ruby-version").chomp gem "rails", "7.0.4" gem "ast" +gem "bootsnap", require: false gem "gds-api-adapters" gem "gds_zendesk" gem "govspeak" diff --git a/Gemfile.lock b/Gemfile.lock index 393619b2ffe..a3b88b665f8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -75,6 +75,8 @@ GEM rack (>= 0.9.0) binding_of_caller (1.0.0) debug_inspector (>= 0.0.1) + bootsnap (1.15.0) + msgpack (~> 1.2) brakeman (5.2.3) builder (3.2.4) byebug (11.1.3) @@ -218,6 +220,7 @@ GEM minitest (>= 4, < 6) mocha (2.0.2) ruby2_keywords (>= 0.0.5) + msgpack (1.6.0) multi_xml (0.6.0) multipart-post (2.1.1) net-imap (0.3.4) @@ -430,6 +433,7 @@ DEPENDENCIES ast better_errors binding_of_caller + bootsnap byebug gds-api-adapters gds_zendesk diff --git a/config/boot.rb b/config/boot.rb index 282011619d9..997563c2aff 100644 --- a/config/boot.rb +++ b/config/boot.rb @@ -1,3 +1,4 @@ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) require "bundler/setup" # Set up gems listed in the Gemfile. +require "bootsnap/setup"