library/install.sh: retry builds on Docker Hub rate limits (HTTP 429)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013wi3ZSot4XbUViwRFgLpRf
This commit is contained in:
Claude
2026-11-06 07:07:56 +00:00
parent f0a0c4ad40
commit f4da2608cd
+14 -3
View File
@@ -48,6 +48,17 @@ lan_ip() { hostname -I 2>/dev/null | awk '{print $1}'; }
dc() { docker compose --project-directory "$HERE" "$@"; } dc() { docker compose --project-directory "$HERE" "$@"; }
# Docker Hub rate-limits anonymous pulls (HTTP 429), which is common on shared
# IPs; retry with a growing pause instead of failing the whole install.
with_retry() {
local n=1 max=5 wait=15
until "$@"; do
[ "$n" -ge "$max" ] && { c_err "Failed after $max attempts: $*"; return 1; }
c_warn "Attempt $n failed (Docker Hub rate limit or network?) - retrying in ${wait}s..."
sleep "$wait"; n=$((n + 1)); wait=$((wait * 2))
done
}
show_status() { show_status() {
[ -f .env ] || { c_err "Not installed yet - run: sudo ./install.sh"; exit 1; } [ -f .env ] || { c_err "Not installed yet - run: sudo ./install.sh"; exit 1; }
# shellcheck disable=SC1091 # shellcheck disable=SC1091
@@ -67,7 +78,7 @@ case "${1:-}" in
--start) dc start; exit 0 ;; --start) dc start; exit 0 ;;
--update) --update)
ensure_docker ensure_docker
dc build --pull --no-cache koha with_retry dc build --pull --no-cache koha
dc up -d dc up -d
show_status; exit 0 ;; show_status; exit 0 ;;
"" ) ;; "" ) ;;
@@ -106,9 +117,9 @@ fi
# --- Build and start --------------------------------------------------------------- # --- Build and start ---------------------------------------------------------------
c_info "Building the Koha image (first time: 5-10 minutes, downloads ~1 GB)..." c_info "Building the Koha image (first time: 5-10 minutes, downloads ~1 GB)..."
dc build with_retry dc build
c_info "Starting..." c_info "Starting..."
dc up -d with_retry dc up -d
# --- Wait until the site answers --------------------------------------------------- # --- Wait until the site answers ---------------------------------------------------
# shellcheck disable=SC1091 # shellcheck disable=SC1091