boxing 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +30 -7
- data/lib/boxing/config.rb +5 -1
- data/lib/boxing/context.rb +26 -1
- data/lib/boxing/version.rb +1 -1
- data/templates/Dockerfile.tt +26 -1
- data/templates/dockerignore.tt +3 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cd1ab96ae737b37be480b3d7d862a5925b951062f7ccae22eb200d26e55f3a14
|
4
|
+
data.tar.gz: 8cd2271e0cb3fc6736c2440f978bdee63b0ba43c90a57596f9064f5b576788ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c4c43055ed9973e21b4e1660fff4bc5f6cd870f08f82339a0ea88be4edde2914c2e37086a5bf92a48e493c12fb2ba20c68bb28c936fcd2e3f77a6fe5e5edf29
|
7
|
+
data.tar.gz: 25dd924fc89a7aa20361acbcdc2c52b0e320c007308ac1a79a227df9938c2b575f7ee468a0dac1dd5cda8d17a820ea0c6e2fcb18de3ad7e7c15c5fa8746205cd
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -86,7 +86,7 @@ If `config/boxing.rb` is found, it will be loaded and change the generated `Dock
|
|
86
86
|
|
87
87
|
```ruby
|
88
88
|
Boxing.config do |c|
|
89
|
-
|
89
|
+
c.root = '/var/www'
|
90
90
|
end
|
91
91
|
```
|
92
92
|
|
@@ -94,9 +94,30 @@ end
|
|
94
94
|
|
95
95
|
```ruby
|
96
96
|
Boxing.config do |c|
|
97
|
-
|
98
|
-
|
99
|
-
|
97
|
+
c.ignores = %w[
|
98
|
+
vendor/gems
|
99
|
+
]
|
100
|
+
end
|
101
|
+
```
|
102
|
+
|
103
|
+
### Extra Packages
|
104
|
+
|
105
|
+
```ruby
|
106
|
+
Boxing.config do |c|
|
107
|
+
c.build_packages = %w[nodejs]
|
108
|
+
c.runtime_packages = %w[git]
|
109
|
+
end
|
110
|
+
```
|
111
|
+
|
112
|
+
### Assets Precompile
|
113
|
+
|
114
|
+
This feature is disabled by default and suggest to use CI to build it.
|
115
|
+
|
116
|
+
```ruby
|
117
|
+
Boxing.config do |c|
|
118
|
+
c.assets_precompile = true
|
119
|
+
# If not given the `node -v` will be execute
|
120
|
+
c.node_version = '14.18'
|
100
121
|
end
|
101
122
|
```
|
102
123
|
|
@@ -104,8 +125,8 @@ end
|
|
104
125
|
|
105
126
|
```ruby
|
106
127
|
Boxing.config do |c|
|
107
|
-
|
108
|
-
|
128
|
+
c.health_check = true
|
129
|
+
c.health_check_path = '/api/status.json'
|
109
130
|
end
|
110
131
|
```
|
111
132
|
|
@@ -120,6 +141,8 @@ end
|
|
120
141
|
* [ ] Docker Compose generator
|
121
142
|
* [ ] Production Version
|
122
143
|
* [x] Development Version
|
144
|
+
* [x] Allow run Assets Precompile in Container
|
145
|
+
* [ ] Disable `RAILS_SERVE_STATIC_FILES` by default
|
123
146
|
* [x] Customize config file `config/boxing.rb`
|
124
147
|
* [x] Customize `APP_ROOT`
|
125
148
|
* [ ] Extra packages
|
@@ -127,7 +150,7 @@ end
|
|
127
150
|
* [ ] Build Stage
|
128
151
|
* [ ] Entrypoint
|
129
152
|
* [ ] Command
|
130
|
-
* [
|
153
|
+
* [x] Expose Port
|
131
154
|
* [x] Health Check
|
132
155
|
* [x] [Liveness](https://github.com/elct9620/openbox) gem detection
|
133
156
|
* [x] Add `curl` for web application
|
data/lib/boxing/config.rb
CHANGED
@@ -9,7 +9,10 @@ module Boxing
|
|
9
9
|
# @return [String] the application root
|
10
10
|
#
|
11
11
|
# @since 0.5.0
|
12
|
-
attr_accessor :root, :name, :registry, :ignores, :port,
|
12
|
+
attr_accessor :root, :name, :registry, :ignores, :port,
|
13
|
+
:health_check, :health_check_path,
|
14
|
+
:assets_precompile, :node_version,
|
15
|
+
:build_packages, :runtime_packages
|
13
16
|
|
14
17
|
# @since 0.5.0
|
15
18
|
def initialize(&block)
|
@@ -17,6 +20,7 @@ module Boxing
|
|
17
20
|
@root = '/srv/app'
|
18
21
|
@port = 9292
|
19
22
|
@health_path = '/status'
|
23
|
+
@assets_precompile = false
|
20
24
|
|
21
25
|
instance_exec(self, &block) if defined?(yield)
|
22
26
|
end
|
data/lib/boxing/context.rb
CHANGED
@@ -29,7 +29,7 @@ module Boxing
|
|
29
29
|
def packages
|
30
30
|
@packages ||=
|
31
31
|
Set
|
32
|
-
.new(default_packages)
|
32
|
+
.new(default_packages + extra_packages)
|
33
33
|
.merge(
|
34
34
|
@dependencies
|
35
35
|
.map(&:name)
|
@@ -71,6 +71,31 @@ module Boxing
|
|
71
71
|
.compact
|
72
72
|
end
|
73
73
|
|
74
|
+
# Extra Packages
|
75
|
+
#
|
76
|
+
# @return [Array<Boxing::Package>]
|
77
|
+
#
|
78
|
+
# @since 0.6.0
|
79
|
+
def extra_packages
|
80
|
+
Array[config.build_packages, config.runtime_packages].compact.flat_map do |name|
|
81
|
+
mode = 0
|
82
|
+
mode |= Package::BUILD if config.build_packages&.include?(name)
|
83
|
+
mode |= Package::RUNTIME if config.runtime_packages&.include?(name)
|
84
|
+
Package.new(name, mode: mode)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
# Return node.js version
|
89
|
+
#
|
90
|
+
# @return [String]
|
91
|
+
#
|
92
|
+
# @since 0.6.0
|
93
|
+
def node_version
|
94
|
+
return config.node_version if config.node_version
|
95
|
+
|
96
|
+
`node -v`.gsub(/^v/, '')
|
97
|
+
end
|
98
|
+
|
74
99
|
# Convert to binding
|
75
100
|
#
|
76
101
|
# @return [Binding]
|
data/lib/boxing/version.rb
CHANGED
data/templates/Dockerfile.tt
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
ARG APP_ROOT=<%= config.root %>
|
2
2
|
ARG RUBY_VERSION=<%= RUBY_VERSION %>
|
3
|
+
<%- if config.assets_precompile -%>ARG NODE_VERSION=<%= node_version %><%- end -%>
|
3
4
|
|
4
5
|
FROM ruby:${RUBY_VERSION}-alpine AS gem
|
5
6
|
ARG APP_ROOT
|
@@ -23,6 +24,29 @@ RUN gem install bundler:<%= Bundler::VERSION %> \
|
|
23
24
|
&& find /usr/local/bundle -type f -name '*.o' -delete \
|
24
25
|
&& rm -rf /usr/local/bundle/cache/*.gem
|
25
26
|
|
27
|
+
<%- if config.assets_precompile -%>
|
28
|
+
FROM node:${NODE_VERSION}-alpine as node
|
29
|
+
FROM ruby:${RUBY_VERSION}-alpine as assets
|
30
|
+
ARG APP_ROOT
|
31
|
+
|
32
|
+
<%- if packages.select(&:runtime?).any? -%>
|
33
|
+
RUN apk add --no-cache <%= packages.select(&:runtime?).join(' ') %> yarn
|
34
|
+
|
35
|
+
<%- end -%>
|
36
|
+
COPY --from=node /usr/local/bin/node /usr/local/bin/node
|
37
|
+
|
38
|
+
COPY --from=gem /usr/local/bundle/config /usr/local/bundle/config
|
39
|
+
COPY --from=gem /usr/local/bundle /usr/local/bundle
|
40
|
+
COPY --from=gem /${APP_ROOT}/vendor/bundle /${APP_ROOT}/vendor/bundle
|
41
|
+
|
42
|
+
RUN mkdir -p ${APP_ROOT}
|
43
|
+
COPY . ${APP_ROOT}
|
44
|
+
|
45
|
+
ENV RAILS_ENV production
|
46
|
+
WORKDIR ${APP_ROOT}
|
47
|
+
RUN bundle exec rake assets:precompile
|
48
|
+
|
49
|
+
<%- end -%>
|
26
50
|
FROM ruby:${RUBY_VERSION}-alpine
|
27
51
|
ARG APP_ROOT
|
28
52
|
|
@@ -39,10 +63,12 @@ RUN mkdir -p ${APP_ROOT}
|
|
39
63
|
<%- if has?('rails') -%>
|
40
64
|
ENV RAILS_ENV=production
|
41
65
|
ENV RAILS_LOG_TO_STDOUT=true
|
66
|
+
ENV RAILS_SERVE_STATIC_FILES=yes
|
42
67
|
<%- end -%>
|
43
68
|
ENV APP_ROOT=$APP_ROOT
|
44
69
|
|
45
70
|
COPY . ${APP_ROOT}
|
71
|
+
COPY --from=assets /${APP_ROOT}/public /${APP_ROOT}/public
|
46
72
|
|
47
73
|
ARG REVISION
|
48
74
|
ENV REVISION $REVISION
|
@@ -60,7 +86,6 @@ RUN adduser -h ${APP_ROOT} -D -s /bin/nologin ruby ruby && \
|
|
60
86
|
USER ruby
|
61
87
|
WORKDIR ${APP_ROOT}
|
62
88
|
|
63
|
-
|
64
89
|
EXPOSE <%= config.port %>
|
65
90
|
<%- if has?('liveness') || config.health_check -%>
|
66
91
|
HEALTHCHECK CMD curl -f http://localhost:<%= config.port %><%= config.health_check_path %> || exit 1
|
data/templates/dockerignore.tt
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: boxing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 蒼時弦也
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-02-
|
11
|
+
date: 2022-02-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|