Skip to content

Commit

Permalink
Set default logging config for Docker daemon (#157)
Browse files Browse the repository at this point in the history
Co-authored-by: Steven Briscoe <me@stevenbriscoe.com>
  • Loading branch information
nevets963 and Steven Briscoe committed Jan 27, 2023
1 parent 36169fe commit a023b3d
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
3 changes: 3 additions & 0 deletions scripts/update/01-run.sh
Expand Up @@ -122,6 +122,9 @@ cd "$UMBREL_ROOT"
}
}

# Add default logging configuration to Docker daemon
"${UMBREL_ROOT}/.umbrel-${RELEASE}/scripts/update/steps/docker-add-logging-config.sh"

# Restart Docker to resolve:
# - This error could happen when pulling new images:
# ERROR: Get "https://registry-1.docker.io/v2/": net/http: TLS handshake timeout
Expand Down
41 changes: 41 additions & 0 deletions scripts/update/steps/docker-add-logging-config.sh
@@ -0,0 +1,41 @@
#!/usr/bin/env bash
set -euo pipefail

DOCKER_DAEMON_CONF_FILE="/etc/docker/daemon.json"
DOCKER_DAEMON_BACKUP_CONF_FILE="/etc/docker/daemon.json.bak"

if [[ ! -f "${DOCKER_DAEMON_CONF_FILE}" ]]; then
echo "{}" > "${DOCKER_DAEMON_CONF_FILE}"
fi

# Check if a 'log-driver' is already set
has_log_driver=$(cat "${DOCKER_DAEMON_CONF_FILE}" | jq '. | has("log-driver")')

if [[ "${has_log_driver}" == "true" ]]; then
echo "Docker daemon 'log-driver' already set"
exit
fi

echo "Adding logging config. to Docker daemon"

# Make a backup of daemon.json
cp --archive "${DOCKER_DAEMON_CONF_FILE}" "${DOCKER_DAEMON_BACKUP_CONF_FILE}"

output=$(jq '. + {"log-driver": "json-file", "log-opts": {"max-size": "50m", "max-file": "1"}}' "${DOCKER_DAEMON_CONF_FILE}")
echo "${output}" > "${DOCKER_DAEMON_CONF_FILE}"

has_log_driver_after=$(cat "${DOCKER_DAEMON_CONF_FILE}" 2> /dev/null | jq -r '. | has("log-driver")' || true)

# If an explicit 'true' does not come back
# Then something has gone wrong, and we'll restore
if [[ "${has_log_driver_after}" != "true" ]]; then
echo "The Docker daemon.json now looks bad. Restoring..."

mv "${DOCKER_DAEMON_BACKUP_CONF_FILE}" "${DOCKER_DAEMON_CONF_FILE}"

exit
fi

rm --force "${DOCKER_DAEMON_BACKUP_CONF_FILE}"

echo "Successfully added default logging config to Docker daemon"

0 comments on commit a023b3d

Please sign in to comment.