Merge branch 'main' into global-logging-config

This commit is contained in:
David Heinemeier Hansson
2023-03-24 15:32:41 +01:00
committed by GitHub
4 changed files with 18 additions and 2 deletions

View File

@@ -347,6 +347,15 @@ logging:
If nothing is configured, the default option `max-size=10m` is used for all containers. The default logging driver of Docker is `json-file`. If nothing is configured, the default option `max-size=10m` is used for all containers. The default logging driver of Docker is `json-file`.
### Using a different stop wait time
On a new deploy, each old running container is gracefully shut down with a `SIGTERM`, and after a grace period of `10` seconds a `SIGKILL` is sent.
You can configure this value via the `stop_wait_time` option:
```yaml
stop_wait_time: 30
```
### Using remote builder for native multi-arch ### Using remote builder for native multi-arch
If you're developing on ARM64 (like Apple Silicon), but you want to deploy on AMD64 (x86 64-bit), you can use multi-architecture images. By default, MRSK will setup a local buildx configuration that does this through QEMU emulation. But this can be quite slow, especially on the first build. If you're developing on ARM64 (like Apple Silicon), but you want to deploy on AMD64 (x86 64-bit), you can use multi-architecture images. By default, MRSK will setup a local buildx configuration that does this through QEMU emulation. But this can be quite slow, especially on the first build.

View File

@@ -30,7 +30,7 @@ class Mrsk::Commands::App < Mrsk::Commands::Base
def stop(version: nil) def stop(version: nil)
pipe \ pipe \
version ? container_id_for_version(version) : current_container_id, version ? container_id_for_version(version) : current_container_id,
xargs(docker(:stop)) xargs(config.stop_wait_time ? docker(:stop, "-t", config.stop_wait_time) : docker(:stop))
end end
def info def info

View File

@@ -6,7 +6,7 @@ require "erb"
require "net/ssh/proxy/jump" require "net/ssh/proxy/jump"
class Mrsk::Configuration class Mrsk::Configuration
delegate :service, :image, :servers, :env, :labels, :registry, :builder, :logging, to: :raw_config, allow_nil: true delegate :service, :image, :servers, :env, :labels, :registry, :builder, :stop_wait_time, to: :raw_config, allow_nil: true
delegate :argumentize, :argumentize_env_with_secrets, :optionize, to: Mrsk::Utils delegate :argumentize, :argumentize_env_with_secrets, :optionize, to: Mrsk::Utils
attr_accessor :destination attr_accessor :destination

View File

@@ -67,6 +67,13 @@ class CommandsAppTest < ActiveSupport::TestCase
new_command.stop.join(" ") new_command.stop.join(" ")
end end
test "stop with custom stop wait time" do
@config[:stop_wait_time] = 30
assert_equal \
"docker ps --quiet --filter label=service=app --filter label=role=web | xargs docker stop -t 30",
new_command.stop.join(" ")
end
test "stop with version" do test "stop with version" do
assert_equal \ assert_equal \
"docker container ls --all --filter name=app-web-123 --quiet | xargs docker stop", "docker container ls --all --filter name=app-web-123 --quiet | xargs docker stop",