boxing 0.5.0 → 0.6.0
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/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
|