dockerfile-rails 0.2.0 → 0.3.1
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/DEMO.md +275 -0
- data/README.md +2 -1
- data/lib/generators/dockerfile_generator.rb +3 -3
- data/lib/generators/templates/Dockerfile.erb +5 -4
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c7b0eaffe4eadbac03e5393587f0377220a8dfd335f098d39a0c688e3d87aa90
|
|
4
|
+
data.tar.gz: 9b83eb7efda7065551580efcd0966e1609c6e52f85c8619a8cc193340dd0a696
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 030eebde1411bfd630bcb55f7120e439c39787d5b0ce791ffee804edd21223672ec567f2923c18cc5f7716458e300b31bf74971255858bd48f883a1f137e7b57
|
|
7
|
+
data.tar.gz: 9e4e0a31577564dc9fabb969b092b33d370794c5d62658b5bb513bb4cb342c37f0350a4bfe2ed48477e864e78249cce48463a69ff624b13c76b8b2c024855ee7
|
data/DEMO.md
ADDED
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
If you have Rails and Docker installed on your machine, running each of these demos is a matter of opening a terminal window, navigating to an empty directory, and copy/pasting a block of instructions into that window. Once started, navigate to http://localhost:3000/ to see the results.
|
|
2
|
+
|
|
3
|
+
# Demo 1 - Minimal
|
|
4
|
+
|
|
5
|
+
Rails provides a _smoke test_ for new applications that makes sure that you have your software configured correctly enough to serve a page. The following deploys that smoke test in production. Once done take a look at the `Dockerfile` file produced.
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
rails new welcome --minimal
|
|
9
|
+
cd welcome
|
|
10
|
+
echo 'Rails.application.routes.draw { root "rails/welcome#index" }' > config/routes.rb
|
|
11
|
+
bundle add dockerfile-rails --group development
|
|
12
|
+
bin/rails generate dockerfile
|
|
13
|
+
docker buildx build . -t rails-welcome
|
|
14
|
+
docker run -p 3000:3000 -e RAILS_MASTER_KEY=$(cat config/master.key) rails-welcome
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
# Demo 2 - Action Cable and Active Record
|
|
18
|
+
|
|
19
|
+
Real applications involve a network of services. The following demo makes use of PostgreSQL and Redis to display a welcome screen with a live, updating, visitors counter. Once done, take a look at the 'docker-compose.yml` file produced.
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
rails new welcome --database postgresql
|
|
23
|
+
cd welcome
|
|
24
|
+
|
|
25
|
+
bin/rails generate model Visitor counter:integer
|
|
26
|
+
bin/rails generate controller Visitors counter
|
|
27
|
+
bin/rails generate channel counter
|
|
28
|
+
|
|
29
|
+
cat << 'EOF' > app/controllers/visitors_controller.rb
|
|
30
|
+
class VisitorsController < ApplicationController
|
|
31
|
+
def counter
|
|
32
|
+
@visitor = Visitor.find_or_create_by(id: 1)
|
|
33
|
+
@visitor.update! counter: @visitor.counter.to_i + 1
|
|
34
|
+
@visitor.broadcast_replace_later_to 'counter',
|
|
35
|
+
partial: 'visitors/counter'
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
EOF
|
|
39
|
+
|
|
40
|
+
cat << 'EOF' > app/views/visitors/counter.html.erb
|
|
41
|
+
<%= turbo_stream_from 'counter' %>
|
|
42
|
+
|
|
43
|
+
<div style="position: absolute; top: 0; left: 0; height: 100vh; width: 100vw">
|
|
44
|
+
<svg width="100vw" height="100vh" viewBox="0 0 112 112" width="112" xmlns="http://www.w3.org/2000/svg">
|
|
45
|
+
<circle cx="56" cy="56" r="56" fill="#D30001"/>
|
|
46
|
+
<path d="m100.082357 48.9995403v4.1135034h-7.3003388v1.89854h3.6840717c1.9725091 0 4.0725341 1.4664311 4.1979971 3.9665124l.005913.2373977v1.5821167c-.087824 3.007959-2.5431211 4.1390018-4.0715389
|
|
47
|
+
4.2011773l-.1323712.0027328h-7.3907451v-4.0909018l7.4811518-.0226016v-1.9889467h-3.4806567c-1.7752583 0-4.0818321-1.3389153-4.2199942-3.9549201l-.0065176-.24899v-1.423905c0-2.6982402 2.2782129-4.182853 4.065464-4.2678491l.1610478-.003866zm-18.691579
|
|
48
|
+
0v11.8658752h6.1702551v4.1361051h-10.7357919v-16.0019803zm-6.4414751 0v16.0019803h-4.5881385v-16.0019803zm-15.210922 0h4.4073251l.187724.0066812c.0338609.0022735.0689457.0051499.1051601.0086643l.2300875.0290178c1.2913829.1985476 3.5463816 1.1213816
|
|
49
|
+
3.6751708 3.9068587l.0057677.2526881v11.7980702h-4.2717151v-2.8252084h-4.1361051v2.8252084h-4.4073251v-11.7980702c0-1.3184306 1.0040826-4.0468495 3.946899-4.197411zm-19.7398519-.0027581
|
|
50
|
+
8.5801857.0005749.2389234.0367462.1479459.029417.2741161.0653582.2125198.0599068.2323225.0747182c.0401793.0137704.0810402.0282201.122511.0433804l.2555691.0997376.2667618.1182852c1.3560515.6402866 3.0026855 2.0321583 3.0026855 5.016294 0 3.1830781-1.5465241
|
|
51
|
+
4.5014899-2.6988362 5.0420477l-.2109651.0925045-.1988828.0758655-.1839577.0608186-.1661898.0473636-.2097508.0493001-.2596493.0418363 5.0056895
|
|
52
|
+
5.0505836h-6.3749589l-3.7262083-3.8608906v3.8608906h-4.3098314zm22.0070603-3.0869193.4449917.4226807-.242968.1779881-.3482331.2693365-.1998573.1629204c-5.2398967-3.8745715-9.6476454-5.4221409-13.197119-5.8153537l-.5259807-.0504708c-1.0390742-.0842126-2.0007861-.0698101-2.8844302.0115462l-.4353132.0461111c-.0714668.0085662-.1423907.0175608-.2127712.0269653l-.4157595.0612005-.4026991.0701607-.3896194.0782415-.3765198.0854427c-.0616606.0147917-.1227746.0298468-.1833415.045147l-.3568339.0945957-.3436854.0995982-.3305174.1037213-.3173297.1069649-.3041225.109329-.2908956.1108137-.4115002.1670803-.5021902.2197615-.6533736.3088956-.610105.3005675c-4.6988866
|
|
53
|
+
2.6219788-6.8539294 6.8460711-7.7682002
|
|
54
|
+
10.8866463l-.1223101.5757838c-.0380504.1913833-.0734278.3821576-.1062732.5721301l-.0910804.5673196-.0767318.5613521-.0632275.5542277c-.0094594.0917134-.0183914.1830817-.0268134.2740808l-.044554.5413722-.0331601.5313556c-.0046242.0876603-.0088087.1748551-.0125713.2615602l-.0176525.5141618-.0083693.5012531.0000696.4871876.0140806.7018779.0283195.6637229.0397089.6216637.0482492.5756999.0539402.5258317.0758481.6167879.0741462.511937.0800002.4783756.0685995.3540863h-17.855317l.05849-.4417253.0463368-.2951448.0630206-.3647242.1132819-.5892069.1093787-.5150907.1820265-.7785088.1661376-.6486772.1259233-.4615943.2130474-.7338225.1589655-.5155042.1731728-.5354699.1879463-.5545226.2032857-.572662.2191913-.5898883.2356628-.6062014.2527004-.6216012c.043568-.1048328.0878694-.2102691.1329162-.3162901l.279318-.6429887.2977707-.6561056.3167894-.6683092.336374-.6795997.3565249-.689977c.3667889-.6948611.7646529-1.4039184
|
|
55
|
+
1.1961393-2.1230624 4.7463501-7.9105834 12.8377469-13.9000252 19.414832-14.4876686 5.0453806-.5054094 9.8925436.9276823 13.9443628
|
|
56
|
+
2.8796435l.6499858.3208582.6354768.3286093.6204019.335015c.1021126.0562949.2035736.1128007.304371.1694892l.5967286.3421013.580239.3451439.5631836.3468411.5455624.3471932.5273753.3461999.5086223.3438614c.0831762.0570406.1655475.1139277.247102.1706333l.479432.3378312.4592644.3321294.438531.3250825.4172317.3166902.5846736.4563569.5335674.4299071.6286237.5242179.6463432.5614015zm-30.7001056
|
|
57
|
+
14.5713243 2.4409801.881465c.1130083.8852319.2731034 1.7233771.4410464
|
|
58
|
+
2.4882761l.1013936.4499406-2.7122001-.9718717-.0338347-.2121618-.0660421-.4755843-.0611601-.5412195c-.0480285-.4774602-.0875814-1.0199003-.1101831-1.6188444zm31.5067239-7.6619652h-1.5143117c-.9400238
|
|
59
|
+
0-1.2391224.409772-1.3342901.670536l-.0282266.0950339c-.003237.014073-.0058266.0271526-.0078982.0390732l-.0081573.0715239-.0001295
|
|
60
|
+
3.9153864h4.1361051l-.0018533-3.9347694-.0102612-.0669913-.0257207-.0987241c-.0835357-.2591507-.3509135-.6910686-1.2052565-.6910686zm-50.4921242.339025 2.5991917.94927-.408641.9515839c-.2124882.4994644-.4277796 1.0148142-.6033575
|
|
61
|
+
1.457745l-.1180849.3028712-2.5991917-.94927.1323662-.3453033.2583889-.6392034.3057111-.7281974.3254875-.7536244c.0362438-.0827943.0723437-.1648823.1081297-.2458716zm35.4451209-.1434449h-3.4568439v3.6588673h3.4343968l.0547106-.025392.0865984-.0488983.1147536-.0786822c.2926428-.2211448.7316071-.7149797.7316071-1.6876847s-.4289878-1.4565634-.7149797-1.6710573l-.1121455-.0760741-.0846303-.0469301zm-15.4426456-.7606218
|
|
62
|
+
1.6273201 1.2882951c-.1808134.705172-.3182315 1.410344-.4122545 2.115516l-.0623806.528879-1.830735-1.4465067c.1808134-.81366.3842284-1.6499217.67805-2.4861834zm4.0004951-6.3058651 1.017075 1.5369134c-.3977893.4158707-.7666485.8317413-1.0950055
|
|
63
|
+
1.2707561l-.2384928.3339623-1.0848801-1.6273201c.40683-.5198383.8814651-1.0396767 1.4013034-1.5143117zm-16.1827936-3.3450467 1.6047183 1.4013034c-.40683.4237812-.8009465.8729894-1.1728146 1.3285542l-.3640987.4569775-1.7403284-1.4917101c.5198383-.5650416
|
|
64
|
+
1.08488-1.1300833 1.6725234-1.695125zm22.3982521-.0904067.4972366 1.4917101c-.5243586.162732-1.0487173.3688592-1.573076.6068095l-.393269.1842488-.5198384-1.559515c.5650417-.2486184 1.2204901-.4972367 1.9889468-.7232534zm5.28879-.54244c.5786027.0361627
|
|
65
|
+
1.1716705.1012555 1.7792033.2068505l.4583618.0869712-.0904067 1.4013034c-.596684-.1265694-1.193368-.2097435-1.790052-.2495224l-.447513-.0216976zm-18.5559686-6.2380601 1.017075
|
|
66
|
+
1.559515c-.4407325.2203663-.8687516.4661594-1.3031274.7278443l-.437201.2666291-1.0396767-1.5821167c.610245-.3616267 1.1978884-.67805
|
|
67
|
+
1.7629301-.9718717zm18.5107653.6328467.0904067-1.49171.4435073.1305564.3839803.1203252.3285458.1099079.2772037.0993048.3284915.128669.296488.1327112.1341451.0695838-.0904067
|
|
68
|
+
1.5143117c-.4821689-.1958811-.9643378-.381717-1.4532035-.5575078zm-8.5434301-2.8252084.4520333 1.3787017h-.2260167c-.4915862 0-.9831725.0127134-1.4747588.0476754l-.4915862.0427313-.4294317-1.3334984c.745855-.0904067 1.4691084-.13561 2.1697601-.13561z"
|
|
69
|
+
fill="#fff"/>
|
|
70
|
+
</svg>
|
|
71
|
+
</div>
|
|
72
|
+
|
|
73
|
+
<div style="position: absolute; font-size: 25vh; font-weight: bold; font-family: Calibre sans-serif; color: white; top: 65vh; left: 0; width: 100%; text-align: center">
|
|
74
|
+
<%= render "counter", visitor: @visitor %>
|
|
75
|
+
</div>
|
|
76
|
+
EOF
|
|
77
|
+
|
|
78
|
+
cat << 'EOF' > app/views/visitors/_counter.html.erb
|
|
79
|
+
<%= turbo_frame_tag(dom_id visitor) do %>
|
|
80
|
+
<%= visitor.counter.to_i %>
|
|
81
|
+
<% end %>
|
|
82
|
+
EOF
|
|
83
|
+
|
|
84
|
+
cat << 'EOF' > config/routes.rb
|
|
85
|
+
Rails.application.routes.draw { root "visitors#counter" }
|
|
86
|
+
EOF
|
|
87
|
+
|
|
88
|
+
bundle add dockerfile-rails --group development
|
|
89
|
+
bin/rails generate dockerfile --compose
|
|
90
|
+
|
|
91
|
+
export RAILS_MASTER_KEY=$(cat config/master.key)
|
|
92
|
+
docker compose build
|
|
93
|
+
docker compose up
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
# Demo 3 - API only
|
|
97
|
+
|
|
98
|
+
This demo deploys a [Create React App](https://create-react-app.dev/) client and a Rails API-only server. Ruby and Rails version information is retrieved from the server and displayed below a spinning React logo. Note that the build process installs the
|
|
99
|
+
node moddules and ruby gems in parallel.
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
rails new welcome --api
|
|
103
|
+
cd welcome
|
|
104
|
+
npx create-react-app client
|
|
105
|
+
|
|
106
|
+
bin/rails generate controller Api versions
|
|
107
|
+
|
|
108
|
+
cat << 'EOF' > app/controllers/api_controller.rb
|
|
109
|
+
class ApiController < ApplicationController
|
|
110
|
+
def versions
|
|
111
|
+
render json: {
|
|
112
|
+
ruby: RUBY_VERSION,
|
|
113
|
+
rails: Rails::VERSION::STRING
|
|
114
|
+
}
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
EOF
|
|
118
|
+
|
|
119
|
+
cat << 'EOF' > client/src/App.js
|
|
120
|
+
import logo from './logo.svg';
|
|
121
|
+
import './App.css';
|
|
122
|
+
import React, { useState, useEffect } from 'react';
|
|
123
|
+
|
|
124
|
+
function App() {
|
|
125
|
+
let [versions, setVersions] = useState('loading...');
|
|
126
|
+
|
|
127
|
+
useEffect(() => {
|
|
128
|
+
fetch('api/versions')
|
|
129
|
+
.then(response => response.json())
|
|
130
|
+
.then(versions => {
|
|
131
|
+
setVersions(Object.entries(versions)
|
|
132
|
+
.map(([name, version]) => `${name}: ${version}`).join(', ')
|
|
133
|
+
)
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
return (
|
|
138
|
+
<div className="App">
|
|
139
|
+
<header className="App-header">
|
|
140
|
+
<img src={logo} className="App-logo" alt="logo" />
|
|
141
|
+
<p>{ versions }</p>
|
|
142
|
+
</header>
|
|
143
|
+
</div>
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export default App;
|
|
148
|
+
EOF
|
|
149
|
+
|
|
150
|
+
bundle add dockerfile-rails --group development
|
|
151
|
+
bin/rails generate dockerfile
|
|
152
|
+
|
|
153
|
+
docker buildx build . -t rails-welcome
|
|
154
|
+
docker run -p 3000:3000 -e RAILS_MASTER_KEY=$(cat config/master.key) rails-welcome
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
# Demo 4 - Bunding Javascript (esbuild)
|
|
158
|
+
|
|
159
|
+
While optional, bundling Javascript is a popular choice, and starting with
|
|
160
|
+
Rails 7 there are three options: esbuild, rollup, and webpack. The
|
|
161
|
+
the following demonstrates Rails 7 with esbuild:
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
rails new welcome --javascript esbuild
|
|
165
|
+
cd welcome
|
|
166
|
+
|
|
167
|
+
yarn add react react-dom
|
|
168
|
+
bin/rails generate controller Time index
|
|
169
|
+
|
|
170
|
+
cat <<-"EOF" >> app/javascript/application.js
|
|
171
|
+
import "./components/counter"
|
|
172
|
+
EOF
|
|
173
|
+
|
|
174
|
+
mkdir app/javascript/components
|
|
175
|
+
|
|
176
|
+
cat <<-"EOF" > app/javascript/components/counter.jsx
|
|
177
|
+
import React, { useState, useEffect, useRef } from 'react';
|
|
178
|
+
import { createRoot } from 'react-dom/client';
|
|
179
|
+
|
|
180
|
+
const Counter = ({ arg }) => {
|
|
181
|
+
const [count, setCount] = useState(0);
|
|
182
|
+
const countRef = useRef(count);
|
|
183
|
+
countRef.current = count;
|
|
184
|
+
|
|
185
|
+
useEffect(() => {
|
|
186
|
+
const interval = setInterval(() => {
|
|
187
|
+
setCount(countRef.current + 1);
|
|
188
|
+
}, 1000);
|
|
189
|
+
return () => clearInterval(interval);
|
|
190
|
+
}, []);
|
|
191
|
+
|
|
192
|
+
return <div>{`${arg} - counter = ${count}!`}</div>;
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
document.addEventListener("DOMContentLoaded", () => {
|
|
196
|
+
const container = document.getElementById("root");
|
|
197
|
+
const root = createRoot(container);
|
|
198
|
+
root.render(<Counter arg={`
|
|
199
|
+
Ruby ${container.getAttribute('ruby')}
|
|
200
|
+
Rails ${container.getAttribute('rails')}`} />);
|
|
201
|
+
});
|
|
202
|
+
EOF
|
|
203
|
+
|
|
204
|
+
cat <<-"EOF" > app/views/time/index.html.erb
|
|
205
|
+
<!DOCTYPE html>
|
|
206
|
+
<html>
|
|
207
|
+
<head>
|
|
208
|
+
<style>
|
|
209
|
+
body {
|
|
210
|
+
margin: 0;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
svg {
|
|
214
|
+
height: 40vmin;
|
|
215
|
+
pointer-events: none;
|
|
216
|
+
margin-bottom: 1em;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
220
|
+
svg {
|
|
221
|
+
animation: App-logo-spin infinite 20s linear;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
main {
|
|
226
|
+
background-color: #282c34;
|
|
227
|
+
min-height: 100vh;
|
|
228
|
+
display: flex;
|
|
229
|
+
flex-direction: column;
|
|
230
|
+
align-items: center;
|
|
231
|
+
justify-content: center;
|
|
232
|
+
font-size: calc(10px + 2vmin);
|
|
233
|
+
color: white;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
@keyframes App-logo-spin {
|
|
237
|
+
from {
|
|
238
|
+
transform: rotate(0deg);
|
|
239
|
+
}
|
|
240
|
+
to {
|
|
241
|
+
transform: rotate(360deg);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
</style>
|
|
245
|
+
</head>
|
|
246
|
+
<body>
|
|
247
|
+
<main>
|
|
248
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-11.5 -10.23174 23 20.46348">
|
|
249
|
+
<title>React Logo</title>
|
|
250
|
+
<circle cx="0" cy="0" r="2.05" fill="#61dafb"/>
|
|
251
|
+
<g stroke="#61dafb" stroke-width="1" fill="none">
|
|
252
|
+
<ellipse rx="11" ry="4.2"/>
|
|
253
|
+
<ellipse rx="11" ry="4.2" transform="rotate(60)"/>
|
|
254
|
+
<ellipse rx="11" ry="4.2" transform="rotate(120)"/>
|
|
255
|
+
</g>
|
|
256
|
+
</svg>
|
|
257
|
+
<div id="root"
|
|
258
|
+
ruby=<%= RUBY_VERSION %>
|
|
259
|
+
rails=<%= Rails::VERSION::STRING %>>
|
|
260
|
+
</div>
|
|
261
|
+
</main>
|
|
262
|
+
</body>
|
|
263
|
+
</html>
|
|
264
|
+
EOF
|
|
265
|
+
|
|
266
|
+
cat <<-"EOF" > config/routes.rb
|
|
267
|
+
Rails.application.routes.draw { root "time#index" }
|
|
268
|
+
EOF
|
|
269
|
+
|
|
270
|
+
bundle add dockerfile-rails --group development
|
|
271
|
+
bin/rails generate dockerfile
|
|
272
|
+
|
|
273
|
+
docker buildx build . -t rails-welcome
|
|
274
|
+
docker run -p 3000:3000 -e RAILS_MASTER_KEY=$(cat config/master.key) rails-welcome
|
|
275
|
+
```
|
data/README.md
CHANGED
|
@@ -32,4 +32,5 @@ Links:
|
|
|
32
32
|
|
|
33
33
|
* [Demos](./DEMO.md)
|
|
34
34
|
* [Preparations for Rails 7.1](https://community.fly.io/t/preparations-for-rails-7-1/9512)
|
|
35
|
-
* [Rails Dockerfile futures](https://discuss.rubyonrails.org/t/rails-dockerfile-futures/82091/1)
|
|
35
|
+
* [Rails Dockerfile futures](https://discuss.rubyonrails.org/t/rails-dockerfile-futures/82091/1)
|
|
36
|
+
* [Fly Cookbooks](https://fly.io/docs/rails/cookbooks/)
|
|
@@ -38,7 +38,7 @@ class DockerfileGenerator < Rails::Generators::Base
|
|
|
38
38
|
template 'docker-entrypoint.erb', 'bin/docker-entrypoint'
|
|
39
39
|
chmod "bin/docker-entrypoint", 0755 & ~File.umask, verbose: false
|
|
40
40
|
|
|
41
|
-
template 'docker-compose.yml.erb', 'docker-compose.yml'
|
|
41
|
+
template 'docker-compose.yml.erb', 'docker-compose.yml' if options.compose
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
private
|
|
@@ -81,7 +81,7 @@ private
|
|
|
81
81
|
|
|
82
82
|
# node support, including support for building native modules
|
|
83
83
|
if using_node?
|
|
84
|
-
packages += %w(curl node-gyp pkg-config)
|
|
84
|
+
packages += %w(curl unzip node-gyp pkg-config)
|
|
85
85
|
|
|
86
86
|
# module build process depends on Python, and debian changed
|
|
87
87
|
# how python is installed with the bullseye release. Below
|
|
@@ -206,4 +206,4 @@ private
|
|
|
206
206
|
'db:migrate'
|
|
207
207
|
end
|
|
208
208
|
end
|
|
209
|
-
end
|
|
209
|
+
end
|
|
@@ -72,9 +72,10 @@ FROM prebuild as node
|
|
|
72
72
|
# Install JavaScript dependencies
|
|
73
73
|
ARG NODE_VERSION=<%= node_version %>
|
|
74
74
|
ARG YARN_VERSION=<%= yarn_version %>
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
RUN curl -fsSL https://fnm.vercel.app/install | bash && \
|
|
76
|
+
/root/.local/share/fnm/fnm install $NODE_VERSION
|
|
77
|
+
ENV PATH=/root/.local/share/fnm/aliases/default/bin/:$PATH
|
|
78
|
+
RUN npm install -g yarn@$YARN_VERSION
|
|
78
79
|
|
|
79
80
|
<% end -%>
|
|
80
81
|
<% if parallel? -%>
|
|
@@ -175,4 +176,4 @@ ENTRYPOINT ["/rails/bin/docker-entrypoint"]
|
|
|
175
176
|
|
|
176
177
|
# Start the server by default, this can be overwritten at runtime
|
|
177
178
|
EXPOSE 3000
|
|
178
|
-
CMD ["./bin/rails", "server"]
|
|
179
|
+
CMD ["./bin/rails", "server"]
|
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: 0.
|
|
4
|
+
version: 0.3.1
|
|
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-01-
|
|
11
|
+
date: 2023-01-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -30,6 +30,7 @@ executables: []
|
|
|
30
30
|
extensions: []
|
|
31
31
|
extra_rdoc_files: []
|
|
32
32
|
files:
|
|
33
|
+
- DEMO.md
|
|
33
34
|
- MIT-LICENSE
|
|
34
35
|
- README.md
|
|
35
36
|
- Rakefile
|