dockerfile-rails 1.6.8 → 1.6.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a58920acbac3b3f5f952ae58113b9270f1b6817d8f61faeb357de48aad49b7ba
4
- data.tar.gz: 89b5140bc2f150a5eda54229efcc984ecac8a3466ead51ac8fb1e57f5f2b8278
3
+ metadata.gz: d778306a922152b1b8fa89406d1afcb45d977c0d5b9bb468340464dbfa9dddbe
4
+ data.tar.gz: e9bf92490211e18e117ccc5164761e2fa5ff3d32d886762e3bbb95d7e506b37c
5
5
  SHA512:
6
- metadata.gz: 77b12d5c786818fe06fcc7e931fd525d5737b4e7cfcf8a28c30807e7492bcf2a8c71cc30aeeacae1eed0cc148d8b75cee9c8e5ba73748e2fa797bd6075389da0
7
- data.tar.gz: 868466c5f0b09071614d0530ea529e51906967e9976832596b35bd7d130a2e7ffc57e872df6db3bd0921b855f68e886f91027555840d295c3b3aedabf01cb850
6
+ metadata.gz: e5be4fcf0d992d8c3fedf4fa3ccc216fddf02c132eeae4313498a11bdee40ea67f2680d7933339ad36ffc339294501cbc06b9377d70aee544c6c37e112d1bcce
7
+ data.tar.gz: f23457093b3fd65b398770231cfc805efef41acf90419a742e7ac1e9d804e6bbddb3c1943cec9b47f8fd11a56833a31367d72dcd834595a6f15bd6b671d2bc09
data/README.md CHANGED
@@ -34,7 +34,7 @@ different contents. If both are specified, `--force` takes precedence.
34
34
 
35
35
  ### Runtime Optimizations:
36
36
 
37
- * `--alpine` - use [alpine](https://www.alpinelinux.org/) as base image
37
+ * `--alpine` - use [alpine](https://www.alpinelinux.org/) as base image (requires [Alpine <= 3.18 OR Rails >= 8.0](https://github.com/sparklemotion/sqlite3-ruby/issues/434))
38
38
  * `--fullstaq` - use [fullstaq](https://fullstaqruby.org/) [images](https://github.com/evilmartians/fullstaq-ruby-docker) on [quay.io](https://quay.io/repository/evl.ms/fullstaq-ruby?tab=tags&tag=latest)
39
39
  * `--jemalloc` - use [jemalloc](https://jemalloc.net/) memory allocator
40
40
  * `--swap=n` - allocate swap space. See [falloc options](https://man7.org/linux/man-pages/man1/fallocate.1.html#OPTIONS) for suffixes
data/Rakefile CHANGED
@@ -30,7 +30,7 @@ namespace :test do
30
30
  sh "bundle config set --local local.dockerfile-rails #{__dir__}"
31
31
  sh "bundle add dockerfile-rails --group development " +
32
32
  "--git https://github.com/rubys/dockerfile-rails.git"
33
- sh "bin/rails generate dockerfile"
33
+ sh "bin/rails generate dockerfile --force"
34
34
  cp "#{__dir__}/test/docker-entrypoint", "bin"
35
35
  IO.write "config/routes.rb",
36
36
  'Rails.application.routes.draw {get "/up", to: proc {[200, {}, ["ok"]]}}'
@@ -45,13 +45,13 @@ namespace :test do
45
45
  task :alpine do
46
46
  rm_rf "test/tmp/system_test"
47
47
  Dir.chdir "test/tmp" do
48
- sh "rails new system_test --javascript esbuild"
48
+ sh "rails new system_test --javascript esbuild --main"
49
49
  Dir.chdir "system_test"
50
50
  sh "bundle config disable_local_branch_check true"
51
51
  sh "bundle config set --local local.dockerfile-rails #{__dir__}"
52
52
  sh "bundle add dockerfile-rails --group development " +
53
53
  "--git https://github.com/rubys/dockerfile-rails.git"
54
- sh "bin/rails generate dockerfile --alpine"
54
+ sh "bin/rails generate dockerfile --alpine --force"
55
55
  cp "#{__dir__}/test/docker-entrypoint", "bin"
56
56
  IO.write "config/routes.rb",
57
57
  'Rails.application.routes.draw {get "/up", to: proc {[200, {}, ["ok"]]}}'
@@ -364,6 +364,30 @@ class DockerfileGenerator < Rails::Generators::Base
364
364
  elsif File.exist? "config/dockerfile.yml"
365
365
  remove_file "config/dockerfile.yml"
366
366
  end
367
+
368
+ # check Dockerfile for common errors: missing packages, mismatched Ruby version
369
+ if options.skip? && File.exist?("Dockerfile")
370
+ message = nil
371
+ shell = Thor::Base.shell.new
372
+
373
+ dockerfile = IO.read("Dockerfile")
374
+ missing = Set.new(base_packages + build_packages) -
375
+ Set.new(dockerfile.scan(/[-\w]+/))
376
+
377
+ unless missing.empty?
378
+ message = "The following packages are missing from the Dockerfile: #{missing.to_a.join(", ")}"
379
+ STDERR.puts "\n" + shell.set_color(message, Thor::Shell::Color::RED, Thor::Shell::Color::BOLD)
380
+ end
381
+
382
+ ruby_version = dockerfile.match(/ARG RUBY_VERSION=(\d+\.\d+\.\d+)/)[1]
383
+
384
+ if ruby_version && ruby_version != RUBY_VERSION
385
+ message = "The Ruby version in the Dockerfile (#{ruby_version}) does not match the Ruby version of the Rails app (#{RUBY_VERSION})"
386
+ STDERR.puts "\n" + shell.set_color(message, Thor::Shell::Color::RED, Thor::Shell::Color::BOLD)
387
+ end
388
+
389
+ exit 42 if message
390
+ end
367
391
  end
368
392
 
369
393
  private
@@ -87,16 +87,10 @@ ENV <%= build_env.join(" \\\n ") %>
87
87
  <% end -%>
88
88
  # Install application gems
89
89
  COPY<% if options.link? %> --link<% end %> Gemfile Gemfile.lock <% if references_ruby_version_file? %>.ruby-version <% end %>./
90
- <% if options.alpine? and deploy_packages.include? 'sqlite-libs' -%>
91
- # Workaround sqlite/alpine issue: https://github.com/sparklemotion/sqlite3-ruby/issues/434
92
- RUN bundle config force_ruby_platform true && \
93
- bundle config set frozen false && \
94
- bundle lock --add-platform ruby
95
- <% end -%>
96
90
  <% if options.cache? -%>
97
91
  RUN --mount=type=cache,id=bld-gem-cache,sharing=locked,target=/srv/vendor \
98
92
  <% if private_gemserver_env_variable_name -%>
99
- --mount=type=secret,id=gemserver_credentials,dst=/kaniko/gemserver_credentials \
93
+ --mount=type=secret,id=gemserver_credentials,target=/kaniko/gemserver_credentials \
100
94
  <%= private_gemserver_env_variable_name %>="$(cat /kaniko/gemserver_credentials)" && \
101
95
  export <%= private_gemserver_env_variable_name %> && \
102
96
  <% end -%>
@@ -113,7 +107,7 @@ RUN --mount=type=cache,id=bld-gem-cache,sharing=locked,target=/srv/vendor \
113
107
 
114
108
  <% else -%>
115
109
  <% if private_gemserver_env_variable_name -%>
116
- RUN --mount=type=secret,id=gemserver_credentials,dst=/kaniko/gemserver_credentials \
110
+ RUN --mount=type=secret,id=gemserver_credentials,target=/kaniko/gemserver_credentials \
117
111
  <%= private_gemserver_env_variable_name %>="$(cat /kaniko/gemserver_credentials)" && \
118
112
  export <%= private_gemserver_env_variable_name %> && \
119
113
  bundle install<% if depend_on_bootsnap? && options.precompile != "defer" -%> && \
@@ -98,6 +98,10 @@ services:
98
98
  command: bundle exec sidekiq
99
99
  <% else -%>
100
100
  command: bundle exec rake solid_queue:start
101
+ <% end -%>
102
+ <% if private_gemserver_env_variable_name -%>
103
+ secrets:
104
+ - gemserver_credentials
101
105
  <% end -%>
102
106
  environment:
103
107
  - RAILS_MASTER_KEY=$RAILS_MASTER_KEY
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dockerfile-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.8
4
+ version: 1.6.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Ruby
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-09 00:00:00.000000000 Z
11
+ date: 2024-05-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -74,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  requirements: []
77
- rubygems_version: 3.5.4
77
+ rubygems_version: 3.5.9
78
78
  signing_key:
79
79
  specification_version: 4
80
80
  summary: Dockerfile generator for Rails