dockerfile-rails 1.0.2 → 1.0.4

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: 0227d5ff2b7d0a0d42d48ba7e3be63280ea528f3f80417a6419dfebbec44b3a7
4
- data.tar.gz: ee9b4b14b72b85193a6e7b54862f6643b02896c5ff4636b294a845e7ae6a1b35
3
+ metadata.gz: 54eedb6e7aa9530a02b253ea1b730b386c2b87a49a00a64611c4c6d96e762505
4
+ data.tar.gz: f47c1b6851c2a3c3e2bacbb999ad0a7ad43d4b28d64a9cde83c392762d810342
5
5
  SHA512:
6
- metadata.gz: 2e9f99b443c3cab5dca0d5800eb996b7f727ef0dbfcf44ad0e1586edf1ed9691b3cafbf1c608f207a55c63fd9d768e2796c4d3644c3e6715214ca5aa159ae122
7
- data.tar.gz: 6980319c05859df14c35649159c874271162ff83ac1c2918e4c959c93f6f39b29f5a4002cbf9305f82404ae8b5d00ee4d0e401e420c37a86abb6b0c8362adcf8
6
+ metadata.gz: 9ed32b4fd6b57906c1e7b2f47270b5edeb96ea710891c9817989c44ea693095e35110b833b4994877e931d3dd0b6ede9b8cac21348120a4ae80b691cfe307c7c
7
+ data.tar.gz: db989d76c9f7e48553a3047b2096fa38708495c0a854bdd0a9805f92152018660850804464f45e3ceed0d0a6cd43809b64bc54b7606f945b5fe3bd25e2cf3797
data/README.md CHANGED
@@ -19,11 +19,12 @@ General options:
19
19
  * `--force` - overwrite existing files
20
20
  * `--ci` - include test gems in deployed image
21
21
  * `--bin-cd` - adjust binstubs to set current working directory
22
- * `--no-prepare` - omit `db:prepare`. Useful for cloud platforms with [release](https://devcenter.heroku.com/articles/release-phase) phases.
23
- * `--platform=s` - specify target platform. See [FROM](https://docs.docker.com/engine/reference/builder/#from) for details.
22
+ * `--no-prepare` - omit `db:prepare`. Useful for cloud platforms with [release](https://devcenter.heroku.com/articles/release-phase) phases
23
+ * `--platform=s` - specify target platform. See [FROM](https://docs.docker.com/engine/reference/builder/#from) for details
24
24
  * `--cache` - use build caching to speed up builds
25
25
  * `--parallel` - use multi-stage builds to install gems and node modules in parallel
26
26
  * `--compose` - generate a `docker-compose.yml` file
27
+ * `--label=name:value` - specify docker label. Can be used multiple times. See [LABEL](https://docs.docker.com/engine/reference/builder/#label) for details
27
28
 
28
29
  Dependencies:
29
30
 
@@ -25,6 +25,9 @@ module DockerfileRails
25
25
  if File.exist? 'Gemfile.lock'
26
26
  parser = Bundler::LockfileParser.new(Bundler.read_file('Gemfile.lock'))
27
27
  @gemfile += parser.specs.map { |spec, version| spec.name }
28
+ @git ||= ENV['RAILS_ENV'] != 'test' && parser.specs.any? do |spec|
29
+ spec.source.instance_of? Bundler::Source::Git
30
+ end
28
31
  end
29
32
 
30
33
  if File.exist? 'Gemfile'
@@ -19,15 +19,21 @@ class DockerfileGenerator < Rails::Generators::Base
19
19
  'redis' => false,
20
20
  'swap' => nil,
21
21
  'yjit' => false,
22
+ 'label' => {},
22
23
  )
23
24
 
25
+ @@labels = {}
26
+
24
27
  # load defaults from config file
25
28
  if File.exist? 'config/dockerfile.yml'
26
29
  options = YAML.safe_load_file('config/dockerfile.yml', symbolize_names: true)[:options]
30
+
27
31
  if options
28
32
  OPTION_DEFAULTS.to_h.each do |option, value|
29
33
  OPTION_DEFAULTS[option] = options[option] if options.include? option
30
34
  end
35
+
36
+ @@labels = options[:label].stringify_keys if options.include? :label
31
37
  end
32
38
  end
33
39
 
@@ -76,9 +82,15 @@ class DockerfileGenerator < Rails::Generators::Base
76
82
  class_option :yjit, type: :boolean, default: OPTION_DEFAULTS.yjit,
77
83
  desc: 'enable YJIT optimizing compiler'
78
84
 
85
+ class_option :label, type: :hash, default: {},
86
+ desc: 'Add Docker label(s)'
87
+
79
88
  def generate_app
80
89
  source_paths.push File.expand_path('./templates', __dir__)
81
90
 
91
+ # merge options
92
+ options.label.replace(@@labels.merge(options.label).select {|key, value| value != ''})
93
+
82
94
  # gather up options for config file
83
95
  @dockerfile_config = OPTION_DEFAULTS.dup.to_h.stringify_keys
84
96
  options.to_h.each do |option, value|
@@ -13,6 +13,12 @@ FROM <%= platform %>quay.io/evl.ms/fullstaq-ruby:${RUBY_VERSION}-<%= @options.je
13
13
  FROM <%= platform %>ruby:$RUBY_VERSION-slim as base
14
14
  <% end -%>
15
15
 
16
+ <% unless options.label.empty? -%>
17
+ <% options.label.each do |key, value| -%>
18
+ LABEL <%= key =~ /^\w[.\w]*$/ ? key : key.inspect %>=<%= value.inspect %>
19
+ <% end -%>
20
+
21
+ <% end -%>
16
22
  # Rails app lives here
17
23
  WORKDIR /rails
18
24
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dockerfile-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Ruby