public
nobgit
read
NobMail
Based on mailcow: dockerized
Languages
Repository composition by tracked source files.
PHP
49%
JavaScript
35%
HTML
9%
CSS
4%
Shell
2%
Python
1%
Lua
0%
Perl
0%
Ruby
0%
SCSS
0%
Create file
Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git
Commit
backup: add image prefetch function to verify latest image is used
d977ddb5
helper-scripts/backup_and_restore.sh | 38 ++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
Diff
diff --git a/helper-scripts/backup_and_restore.sh b/helper-scripts/backup_and_restore.sh
index 7b75272c..2e65f134 100755
--- a/helper-scripts/backup_and_restore.sh
+++ b/helper-scripts/backup_and_restore.sh
@@ -91,6 +91,44 @@ if grep --help 2>&1 | head -n 1 | grep -q -i "busybox"; then
exit 1
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() {
DATE=$(date +"%Y-%m-%d-%H-%M-%S")