fix: do not insert log max-size when log-driver is set at daemon-level
Closes #4519
This commit is contained in:
@@ -10,6 +10,8 @@ import (
|
|||||||
|
|
||||||
"github.com/dokku/dokku/plugins/common"
|
"github.com/dokku/dokku/plugins/common"
|
||||||
dockeroptions "github.com/dokku/dokku/plugins/docker-options"
|
dockeroptions "github.com/dokku/dokku/plugins/docker-options"
|
||||||
|
|
||||||
|
sh "github.com/codeskyblue/go-sh"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TriggerDockerArgsProcessDeploy outputs the logs plugin docker options for an app
|
// TriggerDockerArgsProcessDeploy outputs the logs plugin docker options for an app
|
||||||
@@ -30,11 +32,13 @@ func TriggerDockerArgsProcessDeploy(appName string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hasDriverOpt := false
|
||||||
for _, option := range options {
|
for _, option := range options {
|
||||||
if !strings.HasPrefix(option, "--log-driver=") {
|
if !strings.HasPrefix(option, "--log-driver=") {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hasDriverOpt = true
|
||||||
logDriver := strings.TrimPrefix(option, "--log-driver=")
|
logDriver := strings.TrimPrefix(option, "--log-driver=")
|
||||||
if !allowedDrivers[logDriver] {
|
if !allowedDrivers[logDriver] {
|
||||||
ignoreMaxSize = true
|
ignoreMaxSize = true
|
||||||
@@ -42,6 +46,14 @@ func TriggerDockerArgsProcessDeploy(appName string) error {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !hasDriverOpt {
|
||||||
|
b, _ := sh.Command(common.DockerBin(), "system", "info", "--format", "{{ .LoggingDriver }}").Output()
|
||||||
|
output := strings.TrimSpace(string(b[:]))
|
||||||
|
if !allowedDrivers[output] {
|
||||||
|
ignoreMaxSize = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if !ignoreMaxSize {
|
if !ignoreMaxSize {
|
||||||
maxSize := common.PropertyGet("logs", appName, "max-size")
|
maxSize := common.PropertyGet("logs", appName, "max-size")
|
||||||
if maxSize == "" {
|
if maxSize == "" {
|
||||||
|
|||||||
@@ -369,6 +369,66 @@ teardown() {
|
|||||||
assert_output "10m"
|
assert_output "10m"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@test "(logs) logs:set max-size with alternate log-driver daemon " {
|
||||||
|
driver="$(jq -r '."log-driver"' /etc/docker/daemon.json)"
|
||||||
|
local TMP_FILE=$(mktemp "/tmp/dokku.me.XXXX")
|
||||||
|
|
||||||
|
run create_app
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run /bin/bash -c "dokku logs:set $TEST_APP max-size 20m 2>&1"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
assert_output_contains "Setting max-size"
|
||||||
|
|
||||||
|
run /bin/bash -c "echo '' | dokku plugin:trigger docker-args-process-deploy $TEST_APP 2>&1 | xargs"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
assert_output "--log-opt=max-size=20m"
|
||||||
|
|
||||||
|
DRIVER="journald" jq '."log-driver" = env.DRIVER' <"/etc/docker/daemon.json" >"$TMP_FILE"
|
||||||
|
mv "$TMP_FILE" /etc/docker/daemon.json
|
||||||
|
|
||||||
|
sudo service docker restart
|
||||||
|
|
||||||
|
run /bin/bash -c "dokku logs:set $TEST_APP max-size 20m 2>&1"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
assert_output_contains "Setting max-size"
|
||||||
|
|
||||||
|
run /bin/bash -c "echo '' | dokku plugin:trigger docker-args-process-deploy $TEST_APP 2>&1 | xargs"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
assert_output_not_exists
|
||||||
|
|
||||||
|
if [[ "$driver" = "null" ]]; then
|
||||||
|
DRIVER="$driver" jq 'del(."log-driver")' <"/etc/docker/daemon.json" >"$TMP_FILE"
|
||||||
|
else
|
||||||
|
DRIVER="$driver" jq '."log-driver" = env.DRIVER' <"/etc/docker/daemon.json" >"$TMP_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mv "$TMP_FILE" /etc/docker/daemon.json
|
||||||
|
sudo service docker restart
|
||||||
|
|
||||||
|
run /bin/bash -c "dokku logs:set $TEST_APP max-size 20m 2>&1"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
assert_output_contains "Setting max-size"
|
||||||
|
|
||||||
|
run /bin/bash -c "echo '' | dokku plugin:trigger docker-args-process-deploy $TEST_APP 2>&1 | xargs"
|
||||||
|
echo "output: $output"
|
||||||
|
echo "status: $status"
|
||||||
|
assert_success
|
||||||
|
assert_output "--log-opt=max-size=20m"
|
||||||
|
}
|
||||||
|
|
||||||
@test "(logs) logs:set max-size with alternate log-driver" {
|
@test "(logs) logs:set max-size with alternate log-driver" {
|
||||||
run create_app
|
run create_app
|
||||||
echo "output: $output"
|
echo "output: $output"
|
||||||
|
|||||||
Reference in New Issue
Block a user