dockerfile-rails 1.5.8 → 1.5.10
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 +4 -4
- data/README.md +5 -0
- data/lib/dockerfile-rails/scanner.rb +1 -0
- data/lib/generators/dockerfile_generator.rb +22 -4
- data/lib/generators/templates/Dockerfile.erb +15 -5
- data/lib/generators/templates/_install_node.erb +10 -10
- data/lib/generators/templates/_npm_install.erb +8 -9
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d88f0410567f5185fcffce4a01b85cd5d63d04864e261ded85f260389b1bbf35
|
4
|
+
data.tar.gz: 3f2d42a85d4b78401842aed0c78f277ae5d6c97fe8aa76a370a420d407b8ad5c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cf0c9e328c292f8e9f4cab6e5529ae0767837b0339cbd673809cd23aa6a884ff3fd7562e1a0d85fbe9711fb9925e60f1c3ecb9bf9f7b4ff9d6ad652dcab1b9d3
|
7
|
+
data.tar.gz: 9c1886019e9b95c8190beb66b82f65338f959b210ecced923aa819ec7843f903a849a8022b1429f92c6f0ab5ec20a0e62ef2e6bd05e1627e1e1cb3d79149afba
|
data/README.md
CHANGED
@@ -23,6 +23,10 @@ bin/rails generate dockerfile
|
|
23
23
|
### General option:
|
24
24
|
|
25
25
|
* `--force` - overwrite existing files
|
26
|
+
* `--skip` - keep existing files
|
27
|
+
|
28
|
+
If neither are specified, you will be prompted if a file exists with
|
29
|
+
different contents. If both are specified, `--force` takes precedence.
|
26
30
|
|
27
31
|
### Runtime Optimizations:
|
28
32
|
|
@@ -61,6 +65,7 @@ additional support may be needed:
|
|
61
65
|
* `--postgresql` - add postgresql libraries
|
62
66
|
* `--redis` - add redis libraries
|
63
67
|
* `--sqlite3` - add sqlite3 libraries
|
68
|
+
* `--sqlserver` - add SQL Server libraries
|
64
69
|
|
65
70
|
### Add a package/environment variable/build argument:
|
66
71
|
|
@@ -53,6 +53,7 @@ module DockerfileRails
|
|
53
53
|
@sqlite3 = true if @gemfile.include? "sqlite3"
|
54
54
|
@postgresql = true if @gemfile.include? "pg"
|
55
55
|
@mysql = true if @gemfile.include?("mysql2") || using_trilogy?
|
56
|
+
@sqlserver = true if @gemfile.include?("activerecord-sqlserver-adapter")
|
56
57
|
|
57
58
|
### node modules ###
|
58
59
|
|
@@ -35,6 +35,7 @@ class DockerfileGenerator < Rails::Generators::Base
|
|
35
35
|
"rollbar" => false,
|
36
36
|
"root" => false,
|
37
37
|
"sqlite3" => false,
|
38
|
+
"sqlserver" => false,
|
38
39
|
"sentry" => false,
|
39
40
|
"sudo" => false,
|
40
41
|
"swap" => nil,
|
@@ -127,6 +128,9 @@ class DockerfileGenerator < Rails::Generators::Base
|
|
127
128
|
class_option :sqlite3, aliases: "--sqlite", type: :boolean, default: OPTION_DEFAULTS.sqlite3,
|
128
129
|
desc: "include sqlite3 libraries"
|
129
130
|
|
131
|
+
class_option :sqlserver, aliases: "--sqlserver", type: :boolean, default: OPTION_DEFAULTS.sqlserver,
|
132
|
+
desc: "include SQL server libraries"
|
133
|
+
|
130
134
|
class_option :litefs, type: :boolean, default: OPTION_DEFAULTS.litefs,
|
131
135
|
desc: "replicate sqlite3 databases using litefs"
|
132
136
|
|
@@ -294,7 +298,7 @@ class DockerfileGenerator < Rails::Generators::Base
|
|
294
298
|
fly_attach_consul
|
295
299
|
end
|
296
300
|
|
297
|
-
if File.exist?("fly.toml") && (fly_processes || !options.prepare || options.swap)
|
301
|
+
if File.exist?("fly.toml") && (fly_processes || !options.prepare || options.swap || deploy_database == "sqlite3")
|
298
302
|
if File.stat("fly.toml").size > 0
|
299
303
|
template "fly.toml.erb", "fly.toml"
|
300
304
|
else
|
@@ -560,6 +564,7 @@ private
|
|
560
564
|
# add databases: sqlite3, postgres, mysql
|
561
565
|
packages << "pkg-config" if options.sqlite3? || @sqlite3
|
562
566
|
packages << "libpq-dev" if options.postgresql? || @postgresql
|
567
|
+
packages << "freetds-dev" if options.sqlserver? || @sqlserver
|
563
568
|
|
564
569
|
if (options.mysql? || @mysql) && !using_trilogy?
|
565
570
|
packages << "default-libmysqlclient-dev"
|
@@ -577,7 +582,11 @@ private
|
|
577
582
|
# node support, including support for building native modules
|
578
583
|
if using_node?
|
579
584
|
packages += %w(node-gyp pkg-config)
|
580
|
-
|
585
|
+
|
586
|
+
unless using_execjs? || using_puppeteer?
|
587
|
+
packages << "curl"
|
588
|
+
packages << "unzip" if using_bun?
|
589
|
+
end
|
581
590
|
|
582
591
|
# module build process depends on Python, and debian changed
|
583
592
|
# how python is installed with the bullseye release. Below
|
@@ -611,6 +620,7 @@ private
|
|
611
620
|
# start with databases: sqlite3, postgres, mysql
|
612
621
|
packages << "postgresql-client" if options.postgresql? || @postgresql
|
613
622
|
packages << "default-mysql-client" if options.mysql? || @mysql
|
623
|
+
packages << "freetds-bin" if options.sqlserver? || @sqlserver
|
614
624
|
packages << "libjemalloc2" if options.jemalloc? && !options.fullstaq?
|
615
625
|
if options.sqlite3? || @sqlite3
|
616
626
|
packages << "libsqlite3-0" unless packages.include? "sqlite3"
|
@@ -912,6 +922,8 @@ private
|
|
912
922
|
"postgresql"
|
913
923
|
elsif options.mysql? || @mysql || has_mysql_gem?
|
914
924
|
"mysql"
|
925
|
+
elsif options.sqlserver || @sqlserver
|
926
|
+
"sqlserver"
|
915
927
|
else
|
916
928
|
"sqlite3"
|
917
929
|
end
|
@@ -961,8 +973,8 @@ private
|
|
961
973
|
|
962
974
|
|
963
975
|
def bun_version
|
964
|
-
version = `bun --version`[/\d+\.\d+\.\d+/]
|
965
|
-
version ||= `npm show bun version`[/\d+\.\d+\.\d+/]
|
976
|
+
version = `bun --version`[/\d+\.\d+\.\d+/] rescue nil
|
977
|
+
version ||= `npm show bun version`[/\d+\.\d+\.\d+/] rescue nil
|
966
978
|
|
967
979
|
version
|
968
980
|
end
|
@@ -1143,6 +1155,12 @@ private
|
|
1143
1155
|
end
|
1144
1156
|
end
|
1145
1157
|
|
1158
|
+
if deploy_database == "sqlite3"
|
1159
|
+
if not toml.include? "[mounts]"
|
1160
|
+
toml += "[mounts]\n source=\"data\"\n destination=\"/data\"\n\n"
|
1161
|
+
end
|
1162
|
+
end
|
1163
|
+
|
1146
1164
|
if options.swap
|
1147
1165
|
suffixes = {
|
1148
1166
|
"kib" => 1024,
|
@@ -34,8 +34,8 @@ ENV <%= base_env.join(" \\\n ") %>
|
|
34
34
|
RUN gem update --system --no-document && \
|
35
35
|
gem install -N <%= base_gems.join(" ") %>
|
36
36
|
|
37
|
-
<% unless
|
38
|
-
# Install packages needed to install <%= base_requirements %>
|
37
|
+
<% unless base_packages.empty? -%>
|
38
|
+
# Install packages<% unless base_requirements.empty? -%> needed to install <%= base_requirements %><% end %>
|
39
39
|
<%= render partial: 'apt_install', locals: {packages: base_packages, clean: true, repos: base_repos} %>
|
40
40
|
|
41
41
|
<% end -%>
|
@@ -58,15 +58,18 @@ FROM base as <%= parallel? ? 'pre' : '' %>build
|
|
58
58
|
|
59
59
|
<% if parallel? -%>
|
60
60
|
|
61
|
-
FROM prebuild as node
|
61
|
+
FROM prebuild as <% if using_bun? %>bun<% else %>node<% end %>
|
62
62
|
|
63
63
|
<% end -%>
|
64
|
-
<% if
|
64
|
+
<% if using_bun? and (!using_execjs? || File.exist?('bun.lockb')) -%>
|
65
|
+
<%= render partial: 'install_node', locals: {bun_version: using_execjs? ? nil : bun_version} %>
|
66
|
+
|
67
|
+
<% elsif using_node? and (!using_execjs? || File.exist?('yarn.lock')) -%>
|
65
68
|
<%= render partial: 'install_node', locals: {node_version: using_execjs? ? nil : node_version, yarn_version: File.exist?('yarn.lock') ? yarn_version : nil} %>
|
66
69
|
|
67
70
|
<% end -%>
|
68
71
|
<% if parallel? -%>
|
69
|
-
<%= render partial: 'npm_install', locals: {sources:
|
72
|
+
<%= render partial: 'npm_install', locals: {sources: Dir[*%w(package.json yarn.lock bun.lockb)]} %>
|
70
73
|
|
71
74
|
|
72
75
|
FROM prebuild as build
|
@@ -122,10 +125,17 @@ RUN passenger-config build-native-support
|
|
122
125
|
|
123
126
|
<% end -%>
|
124
127
|
<% if parallel? -%>
|
128
|
+
<% if using_bun? -%>
|
129
|
+
# Copy bun modules
|
130
|
+
COPY --from=bun /rails/node_modules /rails/node_modules
|
131
|
+
COPY --from=bun /usr/local/bun /usr/local/bun
|
132
|
+
ENV PATH=/usr/local/bun/bin:$PATH
|
133
|
+
<% else -%>
|
125
134
|
# Copy node modules
|
126
135
|
COPY --from=node /rails/node_modules /rails/node_modules
|
127
136
|
COPY --from=node /usr/local/node /usr/local/node
|
128
137
|
ENV PATH=/usr/local/node/bin:$PATH
|
138
|
+
<% end -%>
|
129
139
|
|
130
140
|
<% elsif using_node? -%>
|
131
141
|
<%= render partial: 'npm_install', locals: {sources: Dir[*%w(.npmrc .yarnrc package.json package-lock.json yarn.lock bun.lockb)]} %>
|
@@ -1,3 +1,12 @@
|
|
1
|
+
<% if using_bun? -%>
|
2
|
+
# Install Bun
|
3
|
+
<% if bun_version -%>
|
4
|
+
ARG BUN_VERSION=<%= bun_version %>
|
5
|
+
<% end -%>
|
6
|
+
ENV BUN_INSTALL=/usr/local/bun
|
7
|
+
ENV PATH=/usr/local/bun/bin:$PATH
|
8
|
+
RUN curl -fsSL https://bun.sh/install | bash<% if bun_version %> -s -- "bun-v${BUN_VERSION}"<% end %>
|
9
|
+
<% else -%>
|
1
10
|
<% if node_version and yarn_version -%>
|
2
11
|
# Install JavaScript dependencies
|
3
12
|
<% elsif node_version -%>
|
@@ -8,23 +17,14 @@
|
|
8
17
|
<% if node_version && node_version != 'lts' -%>
|
9
18
|
ARG NODE_VERSION=<%= node_version %>
|
10
19
|
<% end -%>
|
11
|
-
<% if using_bun? -%>
|
12
|
-
<% if bun_version -%>
|
13
|
-
ARG BUN_VERSION=<%= bun_version %>
|
14
|
-
<% end -%>
|
15
|
-
<% else -%>
|
16
20
|
<% if yarn_version -%>
|
17
21
|
ARG YARN_VERSION=<%= yarn_version %>
|
18
22
|
<% end -%>
|
19
|
-
<% end -%>
|
20
23
|
<% if node_version && node_version != 'lts' -%>
|
21
24
|
ENV PATH=/usr/local/node/bin:$PATH
|
22
25
|
RUN curl -sL https://github.com/nodenv/node-build/archive/master.tar.gz | tar xz -C /tmp/ && \
|
23
26
|
/tmp/node-build-master/bin/node-build "${NODE_VERSION}" /usr/local/node && \
|
24
27
|
<% end -%>
|
25
|
-
<% if using_bun? -%>
|
26
|
-
npm install -g bun<% if bun_version %>@$BUN_VERSION<% end %> && \
|
27
|
-
<% else -%>
|
28
28
|
<% if yarn_version -%>
|
29
29
|
<% if yarn_version < '2' -%>
|
30
30
|
<% if node_version -%> <% else %>RUN<% end %> npm install -g yarn@$YARN_VERSION<% if node_version -%> && \<% end %>
|
@@ -37,7 +37,7 @@ RUN curl -sL https://github.com/nodenv/node-build/archive/master.tar.gz | tar xz
|
|
37
37
|
corepack prepare yarn@$YARN_VERSION --activate<% if node_version -%> && \<% end %>
|
38
38
|
<% end -%>
|
39
39
|
<% end -%>
|
40
|
-
<% end -%>
|
41
40
|
<% if node_version -%>
|
42
41
|
rm -rf /tmp/node-build-master
|
43
42
|
<% end -%>
|
43
|
+
<% end -%>
|
@@ -3,14 +3,13 @@ COPY<% if options.link? %> --link<% end %> <%= sources.join(' ') %> ./
|
|
3
3
|
<% if sources.join.include?('.yarnrc') && !Dir['.yarn/releases/*'].empty? -%>
|
4
4
|
COPY<% if options.link? %> --link<% end %> .yarn/releases/* .yarn/releases/
|
5
5
|
<% end -%>
|
6
|
-
<% if
|
7
|
-
RUN <% if options.cache?
|
8
|
-
|
6
|
+
<% if using_bun? -%>
|
7
|
+
RUN <% if options.cache? %>--mount=type=cache,id=bld-bun-cache,target=/root/.bun \
|
8
|
+
<% end %>bun install<% if options.lock? %> --frozen-lockfile<% end %>
|
9
|
+
<% elsif sources.join.include? 'yarn' -%>
|
10
|
+
RUN <% if options.cache? %>--mount=type=cache,id=bld-yarn-cache,target=/root/.yarn \
|
11
|
+
YARN_CACHE_FOLDER=/root/.yarn <% end %>yarn install<% if options.lock? %> --frozen-lockfile<% end %>
|
9
12
|
<% else -%>
|
10
|
-
<% if options.cache?
|
11
|
-
|
12
|
-
npm install
|
13
|
-
<% else -%>
|
14
|
-
RUN npm install
|
15
|
-
<% end -%>
|
13
|
+
RUN <% if options.cache? %>--mount=type=cache,id=bld-npm-cache,target=/root/.npm \
|
14
|
+
<% end %>npm install
|
16
15
|
<% end -%>
|
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.5.
|
4
|
+
version: 1.5.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: 2023-09-
|
11
|
+
date: 2023-09-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 3.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 3.0.0
|
27
27
|
description:
|
28
28
|
email: rubys@intertwingly.net
|
29
29
|
executables: []
|