dockerfile-rails 1.1.1 → 1.2.0

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: 968efbf5ac6bca9ea4eeaacebea37fb8a6af440d817de872fc4e4462fb1f8913
4
- data.tar.gz: ec68385d986d3a937ecaeccd2ab932d82af8afab9fb1068beda3e3d2ed0e2684
3
+ metadata.gz: e8dc8b1f01f52091af8e9cb3322db265d96698e80fc203bfc570135efd69cb06
4
+ data.tar.gz: 6054ee7cb322ed79092c6205cce1969b7ab9ad1d868113024845d90bb52d4448
5
5
  SHA512:
6
- metadata.gz: f2b5655c6fe51f0e2fe1861b595333fdd1b7ef37871fa17e7b49ce6c70b36ff3a3f228f2d31ecdcf5748a974010f78e388c2bd789fdd6f13de2558c7a7ab7bdc
7
- data.tar.gz: 63b9a964c315e788829974bbd9adcca7ad90be7e1f97eb488c132ae1ba549128d8041e02ba2e032966a98ca47f279e3eab8f60d5c34f6317878d8f3e26478154
6
+ metadata.gz: 938d057a8f5faf7cca766898b5f6406a379bf90c1fc6116c05759e38a7d7439efdad941855a8cdf4029cc9aadd0131d7463a855e702fe8a69b7746250e1bfbd5
7
+ data.tar.gz: 4be1203c6fa6176c867dae6ef78511aa5e0a3c9943958430a8b77ba04cbb5368371d4ea3e100d4a037946cfd0f94ee7ced7425a1464bfe75450a3c1cc8703dbc
data/DEMO.md CHANGED
@@ -310,10 +310,12 @@ docker buildx build . -t rails-demo
310
310
  docker run -p 3000:3000 -e RAILS_MASTER_KEY=$(cat config/master.key) rails-demo
311
311
  ```
312
312
 
313
- # Demo 6 - Grover / puppeteer / Chrome
313
+ # Demo 6 - Grover / puppeteer / Chromium
314
314
 
315
- This demo runs only on Intel hardware as Google doesn't supply Chrome
316
- binaries for Linux on ARM.
315
+ Uses Grover to produce a PDF of a web page. If you specify a `--platform` that
316
+ contains `amd64`, chrome will be substituted for Chromium. `--platform` is
317
+ required to access Chrome as Google doesn't supply Chrome binaries for Linux on
318
+ ARM.
317
319
 
318
320
  ```bash
319
321
  rails new demo --minimal
data/README.md CHANGED
@@ -40,7 +40,7 @@ bin/rails generate dockerfile
40
40
 
41
41
  * `--ci` - include test gems in deployed image
42
42
  * `--compose` - generate a `docker-compose.yml` file
43
- * `--nginx` - serve static files via [nginx](https://www.nginx.com/)
43
+ * `--nginx` - serve static files via [nginx](https://www.nginx.com/). May require `--root` on some targets to access `/dev/stdout`
44
44
 
45
45
  ### Add a Database:
46
46
 
@@ -108,3 +108,4 @@ The following links relate to the current development status with respect to Rai
108
108
  * [app/templates/Dockerfile.tt](https://github.com/rails/rails/blob/main/railties/lib/rails/generators/rails/app/templates/Dockerfile.tt) - current Rails 7.1 template
109
109
  * Fly.io [Cut over to Rails Dockerfile Generator on Sunday 29 Jan 2023](https://community.fly.io/t/cut-over-to-rails-dockerfile-generator-on-sunday-29-jan-2023/10350)
110
110
  * Fly.io [FAQ](https://fly.io/docs/rails/getting-started/dockerfiles/)
111
+ * DDH's [target](https://github.com/rails/rails/pull/47372#issuecomment-1438971730)
@@ -259,7 +259,7 @@ private
259
259
  end
260
260
 
261
261
  def run_as_root?
262
- options.root? || options.nginx? # needed to access /dev/stdout
262
+ options.root?
263
263
  end
264
264
 
265
265
  def using_node?
@@ -311,7 +311,7 @@ private
311
311
  packages += @@packages["base"] if @@packages["base"]
312
312
 
313
313
  if using_execjs?
314
- packages += %w(curl unzip)
314
+ packages += %w(curl)
315
315
  end
316
316
 
317
317
  if using_puppeteer?
@@ -364,7 +364,7 @@ private
364
364
  # node support, including support for building native modules
365
365
  if using_node?
366
366
  packages += %w(node-gyp pkg-config)
367
- packages += %w(curl unzip) unless using_execjs? || using_puppeteer?
367
+ packages += %w(curl) unless using_execjs? || using_puppeteer?
368
368
 
369
369
  # module build process depends on Python, and debian changed
370
370
  # how python is installed with the bullseye release. Below
@@ -412,7 +412,13 @@ private
412
412
  end
413
413
 
414
414
  # Puppeteer
415
- packages << "google-chrome-stable" if using_puppeteer?
415
+ if using_puppeteer?
416
+ if options.platform&.include? "amd"
417
+ packages << "google-chrome-stable"
418
+ else
419
+ packages += %w(chromium chromium-sandbox)
420
+ end
421
+ end
416
422
 
417
423
  # nginx
418
424
  packages << "nginx" if options.nginx?
@@ -423,7 +429,7 @@ private
423
429
  def deploy_repos
424
430
  repos = []
425
431
 
426
- if using_puppeteer?
432
+ if using_puppeteer? && deploy_packages.include?("google-chrome-stable")
427
433
  repos += [
428
434
  "curl https://dl-ssl.google.com/linux/linux_signing_key.pub |",
429
435
  "gpg --dearmor > /etc/apt/trusted.gpg.d/google-archive.gpg &&",
@@ -457,6 +463,14 @@ private
457
463
  def build_env
458
464
  env = {}
459
465
 
466
+ if using_execjs?
467
+ env["PATH"] = "/usr/local/node/bin:$PATH"
468
+ end
469
+
470
+ if using_puppeteer?
471
+ env["PUPPETEER_SKIP_CHROMIUM_DOWNLOAD"] = "true"
472
+ end
473
+
460
474
  if @@args["build"]
461
475
  env.merge! @@args["build"].to_h { |key, value| [key, "$#{key}"] }
462
476
  end
@@ -491,12 +505,14 @@ private
491
505
  end
492
506
 
493
507
  if using_puppeteer?
494
- if options.root?
495
- env["GROVER_NO_SANDBOX"] = "true" if @gemfile.include? "grover"
496
- env["PUPPETEER_RUBY_NO_SANDBOX"] = "1" if @gemfile.include? "puppeteer-ruby"
497
- end
508
+ env["GROVER_NO_SANDBOX"] = "true" if @gemfile.include? "grover"
509
+ env["PUPPETEER_RUBY_NO_SANDBOX"] = "1" if @gemfile.include? "puppeteer-ruby"
498
510
 
499
- env["PUPPETEER_EXECUTABLE_PATH"] = "/usr/bin/google-chrome"
511
+ if options.platform&.include? "amd"
512
+ env["PUPPETEER_EXECUTABLE_PATH"] = "/usr/bin/google-chrome"
513
+ else
514
+ env["PUPPETEER_EXECUTABLE_PATH"] = "/usr/bin/chromium"
515
+ end
500
516
  end
501
517
 
502
518
  if @@args["deploy"]
@@ -675,7 +691,7 @@ private
675
691
  def procfile
676
692
  if options.nginx?
677
693
  {
678
- nginx: 'nginx -g "daemon off;"',
694
+ nginx: '/usr/sbin/nginx -g "daemon off;"',
679
695
  rails: "./bin/rails server -p 3001"
680
696
  }
681
697
  else
@@ -78,7 +78,7 @@ ARG <%= build_args.map {|key, value| "#{key}=#{value.inspect}"}.join(" \\\n "
78
78
 
79
79
  <% end -%>
80
80
  <% unless build_env.empty? -%>
81
- # Deployment options
81
+ # Build options
82
82
  ENV <%= build_env.join(" \\\n ") %>
83
83
 
84
84
  <% end -%>
@@ -156,15 +156,14 @@ RUN gem install foreman
156
156
 
157
157
  <% end -%>
158
158
  <% unless run_as_root? -%>
159
- # # Run and own the application files as a non-root user for security
159
+ # Run and own the application files as a non-root user for security
160
160
  <% if options.compose? -%>
161
161
  ARG UID=1000 \
162
162
  GID=1000
163
163
  RUN groupadd -f -g $GID rails && \
164
- useradd -u $UID -g $GID rails
165
- <% else -%>
166
- RUN useradd rails
167
- <% end -%>
164
+ useradd -u $UID -g $GID rails<% else -%>
165
+ RUN useradd rails<% end -%><% if options.nginx? %> && \
166
+ chown rails:rails /var/lib/nginx /var/log/nginx/*<% end %>
168
167
  USER rails:rails
169
168
 
170
169
  <% end -%>
@@ -12,9 +12,11 @@ ARG NODE_VERSION=<%= node_version %>
12
12
  ARG YARN_VERSION=<%= yarn_version %>
13
13
  <% end -%>
14
14
  <% if node_version -%>
15
- RUN curl -fsSL https://fnm.vercel.app/install | bash && \
16
- /root/.local/share/fnm/fnm install $NODE_VERSION
17
- ENV PATH=/root/.local/share/fnm/aliases/default/bin/:$PATH
15
+ ENV PATH=/usr/local/node/bin:$PATH
16
+ RUN curl -sL https://github.com/nodenv/node-build/archive/master.tar.gz | tar xz -C /tmp/ && \
17
+ /tmp/node-build-master/bin/node-build "${NODE_VERSION}" /usr/local/node && \
18
+ npm install -g yarn@$YARN_VERSION && \
19
+ rm -rf /tmp/node-build-master
18
20
  <% end -%>
19
21
  <% if yarn_version -%>
20
22
  <% if yarn_version < '2' -%>
@@ -27,4 +29,4 @@ RUN corepack enable && \
27
29
  <% end -%>
28
30
  corepack prepare yarn@$YARN_VERSION --activate
29
31
  <% end -%>
30
- <% end -%>
32
+ <% end -%>
@@ -1,5 +1,8 @@
1
1
  # configure nginx
2
2
  RUN gem install foreman && \
3
+ <% unless run_as_root? -%>
4
+ sed -i 's|pid /run|pid /rails/tmp/pids|' /etc/nginx/nginx.conf && \
5
+ <% end -%>
3
6
  sed -i 's/access_log\s.*;/access_log \/dev\/stdout;/' /etc/nginx/nginx.conf && \
4
7
  sed -i 's/error_log\s.*;/error_log \/dev\/stderr info;/' /etc/nginx/nginx.conf
5
8
 
@@ -1,7 +1,4 @@
1
1
  # Install node modules
2
- <% if using_puppeteer? -%>
3
- ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD="true"
4
- <% end -%>
5
2
  COPY <%=sources.join(' ') %> .
6
3
  <% if sources.join.include? 'yarn' -%>
7
4
  <% if options.cache? -%>
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.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Ruby
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-19 00:00:00.000000000 Z
11
+ date: 2023-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails