Configured the Gitea Actions Docker-in-Docker runner daemons to use the Docker Hub cache mirror https://mirror.gcr.io and updated the relevant application build pipelines to pass explicit base-image build arguments for Docker Official Images.
This addresses Bodylog build failures caused by Docker Hub unauthenticated pull rate limiting while keeping repo workflows explicit about their base image sources.
gitea:
gitea-act-runnergitea-act-runner-2gitea-act-runner-rust-1gitea-act-runner-rust-2dockerd with:
--registry-mirror=https://mirror.gcr.ioBodylog.devEventHorizonAutoCoder-EngineValidated Kubernetes access with /home/ax_julian/.kube/config copied from /etc/kubernetes/admin.conf.
Confirmed all four DIND daemons report the configured mirror via docker info:
["https://mirror.gcr.io/"]
Confirmed all four runner Docker daemons can pull the base images that blocked the Bodylog build:
node:20-alpine
rust:1-bookworm
debian:bookworm-slim
Ran a minimal multi-stage Docker build on gitea-act-runner with --pull. Metadata resolution completed for all three Docker Hub references and the build succeeded.
This does not rely on manually pre-pulled images. New runner pods inherit the daemon mirror setting from their deployment spec.
If a future base image is not present in mirror.gcr.io, Docker may still fall back to Docker Hub. For workloads that continue to require direct Docker Hub access, add managed Docker Hub credentials or deploy an internal authenticated pull-through cache.