Skip to content

Pull base images through Harbor and retry Docker Hub requests - #47

Merged
kdambekalns merged 1 commit into
mainfrom
task/docker-hub-rate-limit
Nov 5, 2026
Merged

kdambekalns merged 1 commit into
mainfrom
task/docker-hub-rate-limit

Conversation

@kdambekalns

@kdambekalns kdambekalns commented Nov 5, 2026 •

Copy link
Copy Markdown
Member

All four build runs after the merge of the native arm64 builds failed with 429 Too Many Requests from Docker Hub. Six of seven errors were HEAD requests (push, merge) with a bare 429, which the Docker documentation describes as the abuse rate limit. One was a GET in a merge job with "You have reached your unauthenticated pull rate limit". The Docker Hub account is a Personal one, limited to 200 pulls in 6 hours, and the builds, tests and test runs of that morning pulled roughly 150–200 times.

  • Dockerfile: the images that came from Docker Hub (golang, blackfire, composer) are pulled through the Docker Hub proxy in Harbor (harbor.flownative.io/docker.io/…). It serves the same digests and can be read anonymously, so builds without credentials (forks, local) keep working. Takes effect with the next release tag, because the workflow builds the code of the latest tag.
  • Merge job: every docker buildx imagetools call is retried up to five times with a growing delay (30 s, 60 s, 120 s, 240 s). The result is inspected only in Harbor, no longer in Docker Hub.

Tested: actionlint is clean (apart from the ubuntu-26.04 labels it does not know yet). The merge step was run locally with a fake docker that fails twice and then succeeds, and with one that always fails. The changed Dockerfiles build locally through the proxy.

Refs OPS-8R (https://minka.flownative.com/go/card/OPS-8R)

On 2026-11-05 all build runs failed with 429 Too Many Requests from
Docker Hub, mostly on HEAD requests during push and in the merge job,
once as "unauthenticated pull rate limit". The Docker Hub account is a
Personal one, limited to 200 pulls in 6 hours.

The build stages and COPY --from images that came from Docker Hub are
now pulled through the Docker Hub proxy in Harbor
(harbor.flownative.io/docker.io/...), so they no longer count against
the pull rate limit of the Docker Hub account. The proxy can be read
anonymously, so builds without credentials keep working.

The merge job retries every imagetools call up to five times with a
growing delay (30 s to 4 min), and only inspects the result in Harbor,
which spares Docker Hub some requests.

Refs OPS-8R

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kdambekalns kdambekalns self-assigned this Nov 5, 2026
@kdambekalns
kdambekalns merged commit d8bad9e into main Nov 5, 2026
8 checks passed
@kdambekalns
kdambekalns deleted the task/docker-hub-rate-limit branch November 5, 2026 16:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant