dockerfile-rails 0.4.2 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0d84e3358f7afd8b5729d49e6b427e03f92eb6fe5da6a258689e933c09d721a2
4
- data.tar.gz: 897d2a5f53c344c7162953e757b751ff646192ecd880f61cfb1754da5dfbb76d
3
+ metadata.gz: 68a853a1d2a0a40c1912a99dd77fe1664abe12bf1678eb4dc07a17873259bc39
4
+ data.tar.gz: 90bcd80ae9f8a6c8c27cc806235bdec6b9bf308ca3a3ebf10712304f7a52a10e
5
5
  SHA512:
6
- metadata.gz: dd9b469a7c2c562c4cf137670c0d2fa177449c00ccb109e9aca65e0c48cb07d35b0a614c64daaaae699596eb2e191c7da4fcde1fc3da0566c3deed56e1b82494
7
- data.tar.gz: 4ec4f71ecc02555da309027504872e137ccffa936b42ef42c935f2d0349b49cbccdfc39924f284653c952096bc3ea8014d9218eed92e7e71cfac15555e860705
6
+ metadata.gz: 693b078d6d664fdd7366c036dbbb9f95732c79b0f058a2bfe7300c886c479885b33ba075d9d598a1266b2a030bf6bfc588aee6c9074a570e6bd9720749765d28
7
+ data.tar.gz: a74d6fe97db12495762f5b6dfcd5ff3cf9c32f2807f9402f9e159f485a5e5c8562347811d12fbdf7601ce6755592c7413ebb6402b2c8c606a90c7c0d5e43148e
data/README.md CHANGED
@@ -17,6 +17,7 @@ General options:
17
17
 
18
18
  * `--force` - overwrite existing files
19
19
  * `--ci` - include test gems in deployed image
20
+ * `--platform=s` - specify target platform. See [FROM](https://docs.docker.com/engine/reference/builder/#from) for details.
20
21
  * `--cache` - use build caching to speed up builds
21
22
  * `--parallel` - use multi-stage builds to install gems and node modules in parallel
22
23
  * `--compose` - generate a `docker-compose.yml` file
@@ -36,8 +37,8 @@ Optimizations:
36
37
 
37
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)
38
39
  * `--jemalloc` - use [jemalloc](https://jemalloc.net/) memory allocator
39
- * `--yjit` - enable [YJIT](https://github.com/ruby/ruby/blob/master/doc/yjit/yjit.md) optimizing compiler.
40
- * `--swap=n` - allocate swap space. See [falloc options](https://man7.org/linux/man-pages/man1/fallocate.1.html#OPTIONS) for suffixes.
40
+ * `--yjit` - enable [YJIT](https://github.com/ruby/ruby/blob/master/doc/yjit/yjit.md) optimizing compiler
41
+ * `--swap=n` - allocate swap space. See [falloc options](https://man7.org/linux/man-pages/man1/fallocate.1.html#OPTIONS) for suffixes
41
42
 
42
43
  Links:
43
44
 
@@ -30,6 +30,9 @@ class DockerfileGenerator < Rails::Generators::Base
30
30
  class_option :mysql, type: :boolean, default: false,
31
31
  desc: 'include mysql libraries'
32
32
 
33
+ class_option :platform, type: :string, default: nil,
34
+ desc: 'image platform (example: linux/arm64)'
35
+
33
36
  class_option :jemalloc, type: :boolean, default: false,
34
37
  desc: 'use jemalloc alternative malloc implementation'
35
38
 
@@ -81,6 +84,14 @@ private
81
84
  ERB.new(template, trim_mode: '-').result(scope.get_binding).strip
82
85
  end
83
86
 
87
+ def platform
88
+ if options.platform
89
+ "--platform #{options.platform} "
90
+ else
91
+ ""
92
+ end
93
+ end
94
+
84
95
  def using_node?
85
96
  return @using_node if @using_node != nil
86
97
  @using_node = File.exist? 'package.json'
@@ -8,9 +8,9 @@ ARG RUBY_VERSION=<%= RUBY_VERSION %>
8
8
 
9
9
  <% end -%>
10
10
  <% if options.fullstaq -%>
11
- FROM quay.io/evl.ms/fullstaq-ruby:${RUBY_VERSION}-<%= @options.jemalloc ? 'jemalloc-' : '' %>slim as base
11
+ FROM <%= platform %>quay.io/evl.ms/fullstaq-ruby:${RUBY_VERSION}-<%= @options.jemalloc ? 'jemalloc-' : '' %>slim as base
12
12
  <% else -%>
13
- FROM ruby:$RUBY_VERSION-slim as base
13
+ FROM <%= platform %>ruby:$RUBY_VERSION-slim as base
14
14
  <% end -%>
15
15
 
16
16
  # Rails app lives here
@@ -124,7 +124,11 @@ COPY --from=client /rails/<%= api_client_dir %>/build /rails/public
124
124
  ENV RAILS_LOG_TO_STDOUT="1" \
125
125
  RAILS_SERVE_STATIC_FILES="true"<% if options.yjit %> \
126
126
  RUBY_YJIT_ENABLE="1"<% end %><% if options.jemalloc and not options.fullstaq %> \
127
+ <% if (options.platform || Gem::Platform::local.cpu).include? 'arm' -%>
128
+ LD_PRELOAD="/usr/lib/aarch64-linux-gnu/libjemalloc.so.2" \
129
+ <% else -%>
127
130
  LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libjemalloc.so.2" \
131
+ <% end -%>
128
132
  MALLOC_CONF="dirty_decay_ms:1000,narenas:2,background_thread:true"<% end %>
129
133
 
130
134
  # Entrypoint prepares the database.
@@ -1,6 +1,6 @@
1
1
  ARG NODE_VERSION=<%= node_version %>
2
2
 
3
- FROM node:$NODE_VERSION-slim as client
3
+ FROM <%= platform %>node:$NODE_VERSION-slim as client
4
4
 
5
5
  WORKDIR /rails/<%= api_client_dir %>
6
6
 
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: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Ruby