mirror of
https://github.com/dokku/dokku.git
synced 2025-12-25 16:29:30 +01:00
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"
|
||||
dockeroptions "github.com/dokku/dokku/plugins/docker-options"
|
||||
|
||||
sh "github.com/codeskyblue/go-sh"
|
||||
)
|
||||
|
||||
// TriggerDockerArgsProcessDeploy outputs the logs plugin docker options for an app
|
||||
@@ -30,11 +32,13 @@ func TriggerDockerArgsProcessDeploy(appName string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
hasDriverOpt := false
|
||||
for _, option := range options {
|
||||
if !strings.HasPrefix(option, "--log-driver=") {
|
||||
continue
|
||||
}
|
||||
|
||||
hasDriverOpt = true
|
||||
logDriver := strings.TrimPrefix(option, "--log-driver=")
|
||||
if !allowedDrivers[logDriver] {
|
||||
ignoreMaxSize = true
|
||||
@@ -42,6 +46,14 @@ func TriggerDockerArgsProcessDeploy(appName string) error {
|
||||
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 {
|
||||
maxSize := common.PropertyGet("logs", appName, "max-size")
|
||||
if maxSize == "" {
|
||||
|
||||
@@ -369,6 +369,66 @@ teardown() {
|
||||
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" {
|
||||
run create_app
|
||||
echo "output: $output"
|
||||
|
||||
Reference in New Issue
Block a user