mirror of
https://github.com/mailcow/mailcow-dockerized.git
synced 2025-12-21 05:41:31 +00:00
backup: add image prefetch function to verify latest image is used
This commit is contained in:
@@ -91,6 +91,44 @@ if grep --help 2>&1 | head -n 1 | grep -q -i "busybox"; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Add image prefetch function
|
||||||
|
function prefetch_image() {
|
||||||
|
echo "Checking Docker image: ${DEBIAN_DOCKER_IMAGE}"
|
||||||
|
|
||||||
|
# Get local image digest if it exists
|
||||||
|
local local_digest=$(docker image inspect ${DEBIAN_DOCKER_IMAGE} --format='{{index .RepoDigests 0}}' 2>/dev/null | cut -d'@' -f2)
|
||||||
|
|
||||||
|
# Get remote image digest without pulling
|
||||||
|
local remote_digest=$(docker manifest inspect ${DEBIAN_DOCKER_IMAGE} 2>/dev/null | grep -oP '"digest":\s*"\K[^"]+' | head -1)
|
||||||
|
|
||||||
|
if [[ -z "${remote_digest}" ]]; then
|
||||||
|
echo "Warning: Unable to check remote image"
|
||||||
|
if [[ -n "${local_digest}" ]]; then
|
||||||
|
echo "Using cached version"
|
||||||
|
echo
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo "Error: Image ${DEBIAN_DOCKER_IMAGE} not found locally or remotely"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "${local_digest}" != "${remote_digest}" ]]; then
|
||||||
|
echo "Image update available, pulling ${DEBIAN_DOCKER_IMAGE}"
|
||||||
|
if docker pull ${DEBIAN_DOCKER_IMAGE} 2>/dev/null; then
|
||||||
|
echo "Successfully pulled ${DEBIAN_DOCKER_IMAGE}"
|
||||||
|
else
|
||||||
|
echo "Error: Failed to pull ${DEBIAN_DOCKER_IMAGE}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Image is up to date (${remote_digest:0:12}...)"
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
# Prefetch the image early in the script
|
||||||
|
prefetch_image
|
||||||
|
|
||||||
function backup() {
|
function backup() {
|
||||||
DATE=$(date +"%Y-%m-%d-%H-%M-%S")
|
DATE=$(date +"%Y-%m-%d-%H-%M-%S")
|
||||||
|
|||||||
Reference in New Issue
Block a user