From 1a2b0d87c6e43e87ec8fa5f1c31931f935225f0a Mon Sep 17 00:00:00 2001 From: rays Date: Fri, 11 Sep 2026 14:49:58 +0000 Subject: [PATCH] CLAUDE.md: what to do when Docker Hub rate-limits the image build The build asks Docker Hub about its two base images every time unless they are stored locally, and this host has no Docker Hub login, so a busy day ends in 429 Too Many Requests. Pulling them from mirror.gcr.io and tagging them locally lets the build go ahead without asking. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_016HdTEWQNrzyFULijigkmMn --- CLAUDE.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index 9777381..2856103 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -30,6 +30,20 @@ docker logs --tail 20 iPodderX **Name the service.** A bare `up -d` recreates every container in `content`, beets and immich included. Run `pull` before `up`, because `up` reuses whatever `latest` the host already has. +**A build that fails with `429 Too Many Requests` on a base image** is Docker Hub rate-limiting +this host. There is no Docker Hub login here, and the build asks about `debian:bookworm-slim` and +`rust:1-slim-bookworm` every time unless they are already stored locally. Pull them from Google's +mirror and tag them; the build then uses the local copies without asking Docker Hub: + +```sh +docker pull mirror.gcr.io/library/debian:bookworm-slim +docker tag mirror.gcr.io/library/debian:bookworm-slim debian:bookworm-slim +docker pull mirror.gcr.io/library/rust:1-slim-bookworm +docker tag mirror.gcr.io/library/rust:1-slim-bookworm rust:1-slim-bookworm +``` + +Run those again now and then, or the local copies go stale. + The healthcheck runs `ipx status` against the control socket, so `(healthy)` in `docker ps` means the worker is alive, not just the web port. The container restarts on its own after a reboot.