mrsk 0.6.1 → 0.6.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +10 -8
- data/lib/mrsk/cli/main.rb +6 -2
- data/lib/mrsk/commander.rb +5 -1
- data/lib/mrsk/commands/accessory.rb +1 -0
- data/lib/mrsk/commands/app.rb +1 -0
- data/lib/mrsk/commands/base.rb +2 -0
- data/lib/mrsk/commands/builder/base.rb +4 -0
- data/lib/mrsk/commands/builder/multiarch.rb +1 -1
- data/lib/mrsk/commands/builder/native/remote.rb +1 -1
- data/lib/mrsk/commands/builder/native.rb +1 -1
- data/lib/mrsk/commands/prune.rb +2 -2
- data/lib/mrsk/commands/traefik.rb +2 -1
- data/lib/mrsk/configuration.rb +4 -0
- data/lib/mrsk/version.rb +1 -1
- 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: feb2c373300543bf704e62d0cf8c545d32a65e1427691fdb01587c86003d4768
|
4
|
+
data.tar.gz: 9f849d3d40a610480ee6deddd146ca25331e9058a7b309a717467ccc089cfbfc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16cd77975eef8b0e4a17fcf1ae1db7a94affb93748453660600b9017e6a3cb4709f21c25a266d664bd61348def6a171f7da9d0ac01465ceaa470cecaf075a9fd
|
7
|
+
data.tar.gz: 0271c9bd94849d630949c5d768984c33d69b72922d3cf8b63116ff33df6a973fad17a35735f09cf038ce9853dd257866b3657333a200e7b755ae18febd4cdb13
|
data/README.md
CHANGED
@@ -47,7 +47,7 @@ Voila! All the servers are now serving the app on port 80. If you're just runnin
|
|
47
47
|
|
48
48
|
MRSK basically is Capistrano for Containers, which allow us to use vanilla servers as the hosts. No need to ensure that the servers have just the right version of Ruby or other dependencies you need. That all lives in the Docker image now. You can boot a brand new Ubuntu (or whatever) server, add it to the deploy servers of MRSK, and it'll be auto-provisioned with Docker, and run right away. Docker's layer caching also allows for quicker deployments with less mucking about on the server. And the images built for MRSK can be used for CI or later introspection.
|
49
49
|
|
50
|
-
Kubernetes is a beast. Running it yourself on your own hardware is not for the faint of heart. It's a fine option if you want to run on someone else's platform, like Render or
|
50
|
+
Kubernetes is a beast. Running it yourself on your own hardware is not for the faint of heart. It's a fine option if you want to run on someone else's platform, either transparently [like Render](https://thenewstack.io/render-cloud-deployment-with-less-engineering/) or explicitly on AWS/GCP, but if you'd like the freedom to move between cloud and your own hardware, or even mix the two, MRSK is much simpler. You can see everything that's going on, it's just basic Docker commands being called.
|
51
51
|
|
52
52
|
Docker Swarm is much simpler than Kubernetes, but it's still built on the same declarative model that uses state reconciliation. MRSK is intentionally designed to around imperative commands, like Capistrano.
|
53
53
|
|
@@ -249,14 +249,15 @@ builder:
|
|
249
249
|
|
250
250
|
This build secret can then be referenced in the Dockerfile:
|
251
251
|
|
252
|
-
```
|
252
|
+
```dockerfile
|
253
253
|
# Copy Gemfiles
|
254
254
|
COPY Gemfile Gemfile.lock ./
|
255
255
|
|
256
|
-
# Install dependencies, including private repositories via access token
|
256
|
+
# Install dependencies, including private repositories via access token (then remove bundle cache with exposed GITHUB_TOKEN)
|
257
257
|
RUN --mount=type=secret,id=GITHUB_TOKEN \
|
258
258
|
BUNDLE_GITHUB__COM=x-access-token:$(cat /run/secrets/GITHUB_TOKEN) \
|
259
|
-
bundle install
|
259
|
+
bundle install && \
|
260
|
+
rm -rf /usr/local/bundle/cache
|
260
261
|
```
|
261
262
|
|
262
263
|
### Using command arguments for Traefik
|
@@ -265,12 +266,13 @@ You can customize the traefik command line:
|
|
265
266
|
|
266
267
|
```yaml
|
267
268
|
traefik:
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
metrics.prometheus.buckets: 0.1,0.3,1.2,5.0
|
269
|
+
args:
|
270
|
+
accesslog: true
|
271
|
+
accesslog.format: json
|
272
272
|
```
|
273
273
|
|
274
|
+
This will start the traefik container with `--accesslog=true accesslog.format=json`.
|
275
|
+
|
274
276
|
### Configuring build args for new images
|
275
277
|
|
276
278
|
Build arguments that aren't secret can also be configured:
|
data/lib/mrsk/cli/main.rb
CHANGED
@@ -107,10 +107,14 @@ class Mrsk::Cli::Main < Mrsk::Cli::Base
|
|
107
107
|
desc "envify", "Create .env by evaluating .env.erb (or .env.staging.erb -> .env.staging when using -d staging)"
|
108
108
|
def envify
|
109
109
|
if destination = options[:destination]
|
110
|
-
|
110
|
+
env_template_path = ".env.#{destination}.erb"
|
111
|
+
env_path = ".env.#{destination}"
|
111
112
|
else
|
112
|
-
|
113
|
+
env_template_path = ".env.erb"
|
114
|
+
env_path = ".env"
|
113
115
|
end
|
116
|
+
|
117
|
+
File.write(env_path, ERB.new(File.read(env_template_path)).result, perm: 0600)
|
114
118
|
end
|
115
119
|
|
116
120
|
desc "remove", "Remove Traefik, app, and registry session from servers"
|
data/lib/mrsk/commander.rb
CHANGED
@@ -75,10 +75,14 @@ class Mrsk::Commander
|
|
75
75
|
|
76
76
|
|
77
77
|
def with_verbosity(level)
|
78
|
-
old_level =
|
78
|
+
old_level = self.verbosity
|
79
|
+
|
80
|
+
self.verbosity = level
|
79
81
|
SSHKit.config.output_verbosity = level
|
82
|
+
|
80
83
|
yield
|
81
84
|
ensure
|
85
|
+
self.verbosity = old_level
|
82
86
|
SSHKit.config.output_verbosity = old_level
|
83
87
|
end
|
84
88
|
|
data/lib/mrsk/commands/app.rb
CHANGED
data/lib/mrsk/commands/base.rb
CHANGED
@@ -13,6 +13,10 @@ class Mrsk::Commands::Builder::Base < Mrsk::Commands::Base
|
|
13
13
|
argumentize "--secret", secrets.collect { |secret| [ "id", secret ] }
|
14
14
|
end
|
15
15
|
|
16
|
+
def build_tags
|
17
|
+
[ "-t", config.absolute_image, "-t", config.latest_image ]
|
18
|
+
end
|
19
|
+
|
16
20
|
private
|
17
21
|
def args
|
18
22
|
(config.builder && config.builder["args"]) || {}
|
@@ -9,7 +9,7 @@ class Mrsk::Commands::Builder::Native < Mrsk::Commands::Builder::Base
|
|
9
9
|
|
10
10
|
def push
|
11
11
|
combine \
|
12
|
-
docker(:build,
|
12
|
+
docker(:build, *build_tags, *build_args, *build_secrets, "."),
|
13
13
|
docker(:push, config.absolute_image)
|
14
14
|
end
|
15
15
|
|
data/lib/mrsk/commands/prune.rb
CHANGED
@@ -2,8 +2,8 @@ require "active_support/duration"
|
|
2
2
|
require "active_support/core_ext/numeric/time"
|
3
3
|
|
4
4
|
class Mrsk::Commands::Prune < Mrsk::Commands::Base
|
5
|
-
PRUNE_IMAGES_AFTER =
|
6
|
-
PRUNE_CONTAINERS_AFTER =
|
5
|
+
PRUNE_IMAGES_AFTER = 7.days.in_hours.to_i
|
6
|
+
PRUNE_CONTAINERS_AFTER = 3.days.in_hours.to_i
|
7
7
|
|
8
8
|
def images
|
9
9
|
docker :image, :prune, "-f", "--filter", "until=#{PRUNE_IMAGES_AFTER}h"
|
@@ -2,7 +2,8 @@ class Mrsk::Commands::Traefik < Mrsk::Commands::Base
|
|
2
2
|
def run
|
3
3
|
docker :run, "--name traefik",
|
4
4
|
"-d",
|
5
|
-
"--restart unless-stopped",
|
5
|
+
"--restart", "unless-stopped",
|
6
|
+
"--log-opt", "max-size=#{MAX_LOG_SIZE}",
|
6
7
|
"-p 80:80",
|
7
8
|
"-v /var/run/docker.sock:/var/run/docker.sock",
|
8
9
|
"traefik",
|
data/lib/mrsk/configuration.rb
CHANGED
data/lib/mrsk/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mrsk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-02-
|
11
|
+
date: 2023-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|