Record PP-5245 as the MinIO mirror's retirement ticket - #3
Merged
Merged
Conversation
The Dockerfile, the workflow header and the README all said the mirror was a bridge that should be retired, but none of them named the ticket, so a reader had no way to find it. Given the file also says "do not add features to it", the missing pointer was the thing most likely to let the mirror quietly become permanent. Also folds the 5,000-download deletion threshold into the README's retirement section alongside the delete command, so the cost of waiting is visible next to the instruction, and updates the workflow's "flip the package to public" note from a pending one-time step to a record of what was done. Comment-only: no instruction in the Dockerfile changes, so the image contents are unchanged. Merging does re-trigger the publish workflow, since both files are in its paths filter. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The upstream image set ENTRYPOINT to a docker-entrypoint.sh that supplied the `minio` binary, so `docker run <image> server /data` worked. This mirror has no entrypoint, so that same invocation fails with `exec: "server": executable file not found in $PATH` and the container never leaves Created. The three CI Dockerfiles set their own command and never hit this, which is why it went unnoticed -- but virtual-library-card's README documented exactly that invocation for local development, and it silently broke. Recording the difference here so the next person invoking the image directly finds it before debugging a container that refuses to start. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Names PP-5245 as the retirement ticket for the MinIO mirror, in the three places that previously
said it should be retired without saying where to find the ticket:
images/minio/Dockerfile— the "bridge, not a destination" note.github/workflows/build-minio-mirror.yml— the headerREADME.md— a new### RetirementsectionTwo smaller cleanups while in there:
gh api -X DELETEcommand, so the cost of waiting is visible right where someone would go to act.Previously the threshold was a trailing sentence and the command lived only in a PR description.
has been done, so it now records what was done and notes it would need doing again if the package
were ever recreated — GHCR creates packages private and the workflow cannot change that.
Motivation and Context
The mirror exists because MinIO withdrew anonymous public access to its server image from both
Docker Hub and quay.io (#2). It is deliberately a stopgap, and
images/minio/Dockerfiletells readers "do not add features to it" — but it then pointed at a"retirement ticket" that had no identifier, so there was no way to follow the instruction to its
conclusion.
That gap matters more than a missing cross-reference normally would. Retiring this gets strictly
harder with time: GitHub does not allow self-service deletion of a public package once any version
passes 5,000 downloads, after which it takes a Support request. With
pull=Trueon everytox-docker build, ephemeral CI runners and three repos pulling, an untracked mirror is one that
quietly becomes permanent.
Also: the mirror's entrypoint difference from upstream
A second commit records a behavioural difference that had already caused a real breakage. The
upstream image set
ENTRYPOINTto adocker-entrypoint.shthat supplied theminiobinary, sodocker run <image> server /dataworked. This mirror ships no entrypoint, so that same invocationfails with
exec: "server": executable file not found in $PATHand the container never leavesCreated.The three CI Dockerfiles all set their own command, so none of them hit this — which is why it went
unnoticed. But virtual-library-card's README documented exactly that invocation for local
development, and it broke silently (fixed in ThePalaceProject/virtual-library-card#1016). The
Dockerfile now says so next to its
CMD, so the next person invoking the image directly finds itbefore debugging a container that refuses to start.
How Has This Been Tested?
The Dockerfile change is comment-only — no instruction changes — so the image contents are
unchanged: the same release binaries pinned by sha256 and the same UBI base pinned by digest.
Note that merging this does re-trigger the publish workflow, because both changed files are in
its
paths:filter. That is expected and harmless; the workflow's PR run on this branch builds botharchitectures and verifies every pinned checksum without pushing, which is the check that the
Dockerfile is still valid. The published manifest digest may change even though the contents do not,
since buildx attaches fresh provenance to each build — consumers pin the tag, not the digest, so
nothing downstream is affected.
The entrypoint behaviour documented in the second commit was verified against the published image:
docker run <mirror> server /data --console-address ":9001"fails as described and leaves thecontainer in
Created, whiledocker run <mirror> minio server /data --console-address ":9001"comes up healthy in ~2s, with
mcand the console both working inside it.🤖 Generated with Claude Code