#!/bin/sh # Keep the workspace image fresh. Runs long-lived under supervise-daemon: # pulls periodically, with capped exponential backoff on failure instead of a # tight retry loop that hammers the registry. set -u IMAGE="git.sfclub.cc/cloud/workspace-image:latest" INTERVAL="${IMAGE_UPDATER_INTERVAL:-3600}" # seconds between successful pulls MIN_DELAY="${IMAGE_UPDATER_MIN_DELAY:-5}" # initial retry delay on failure MAX_DELAY="${IMAGE_UPDATER_MAX_DELAY:-300}" # cap on retry delay while true; do delay="$MIN_DELAY" until docker pull "$IMAGE" >/dev/null 2>&1; do echo "image-updater: pull failed, retrying in ${delay}s" >&2 sleep "$delay" delay=$((delay * 2)) [ "$delay" -gt "$MAX_DELAY" ] && delay="$MAX_DELAY" done echo "image-updater: pulled $IMAGE" sleep "$INTERVAL" done