dockerfile-rails 1.1.0 → 1.1.2

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: d20c08de9e4419da64806a66f96edfeb7180e09eca15d1c8bd4a52cbf8372be9
4
- data.tar.gz: e6f11bdbc4a56eb235de642a156124e9a84e179bef99a2e16842c419278b8d84
3
+ metadata.gz: 9c9c9a8eb85b3dbb31aefb0f0f3fa9bac0ab070e0b2807a0e084cc553643ece4
4
+ data.tar.gz: 79388988476275627c99e27630556b02a732b7baf9737003ac5276395825ed14
5
5
  SHA512:
6
- metadata.gz: 9d170c27b085983ea7f58b9ecf0c02ea229d3e43494483f9c4165fe4acad1dedd6b66e4edfaddac73ea08b2157e21a6129f33079e51b98a43c9b00eea5eb5776
7
- data.tar.gz: 872b30f56d771d92ec2acac229ff42e8dea97f9971961d17c11dc517b9b7905d31127e395d2e450bdbe87700cdc70bce4a58ded23740a50d08dd747382c02905
6
+ metadata.gz: 78271283892ec8c0140ca96a6bc3347c2836ca6f720752f3d5956d8bd267a63efb1b19a6efa1ba45b8cb045e4e7e036c3ec74c9aa2b816a347ed9f26276e5134
7
+ data.tar.gz: 036137a0829ecc764007181d4332b940d45f15197e02360db7d6ac960039463084d3ceaeae65f269b813896fbe4daabc1e97dcb16b42f7dd2db992848985f040
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
 
@@ -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?
@@ -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"] = "/root/.local/share/fnm/aliases/default/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,16 +156,15 @@ 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 -%>
168
- USER rails
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 %>
167
+ USER rails:rails
169
168
 
170
169
  <% end -%>
171
170
  <% unless options.precompile == "defer" -%>
@@ -13,9 +13,12 @@ ARG YARN_VERSION=<%= yarn_version %>
13
13
  <% end -%>
14
14
  <% if node_version -%>
15
15
  RUN curl -fsSL https://fnm.vercel.app/install | bash && \
16
- /root/.local/share/fnm/fnm install $NODE_VERSION
16
+ /root/.local/share/fnm/fnm install $NODE_VERSION<% if !run_as_root? && using_execjs? %> && \
17
+ mv /root/.local/share/fnm/aliases/default/bin/node /usr/local/bin<% end %>
18
+ <% if !using_execjs? || yarn_version -%>
17
19
  ENV PATH=/root/.local/share/fnm/aliases/default/bin/:$PATH
18
20
  <% end -%>
21
+ <% end -%>
19
22
  <% if yarn_version -%>
20
23
  <% if yarn_version < '2' -%>
21
24
  RUN npm install -g yarn@$YARN_VERSION
@@ -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.0
4
+ version: 1.1.2
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-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails