fix(infra): restore pinned MinIO compose image - #310
Merged
Merged
Conversation
- minio/minio deleted from Docker Hub (2026-09-11), quay.io denies anonymous pull, dl.min.io/server/minio/release/ returns 410; upstream archived 2026-04-25 - new docker/minio/Dockerfile fetches the official binary from github.com/minio/minio/releases and verifies its SHA-256 at build time - both compose files now build/use gw2a-minio:<release> with identical image spec - dev keeps published ports; prod stays internal, restart: unless-stopped - negative build-arg test fails the build on hash mismatch - runtime validation: health, creds, bucket, round-trip, restart persistence, repo MinIO integration smoke test (2 passed) Signed-off-by: Roland Salardon <r.salardon@gmail.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.
Root cause
Docker Hub
minio/miniowas deleted (2026-09-11). Quay.io'sminio/minionow deniesanonymous pull (token grants
actions:[]).dl.min.io/server/minio/release/returns HTTP410. Upstream Community Edition is archived (2026-04-25) and source-only.
What was already fixed
PR #309 repaired CI (
.github/workflows/ci.yml) by downloading the officialRELEASE.2025-09-07T16-13-09Zbinary fromgithub.com/minio/minio/releasesandverifying its SHA-256 at runtime.
What this PR fixes
The remaining local/prod
docker-compose.ymlanddocker-compose.prod.ymlpaths,which still referenced the deleted/unpullable images.
Changes
docker/minio/Dockerfile(59 lines): builds a thindebian:bookworm-slimimagearound the official GitHub Release binary.
ARG MINIO_RELEASE=RELEASE.2025-09-07T16-13-09Z.sha256sumassets):MINIO_SHA256_AMD64=7c5bd8512c6e966455b1d198209358b2d191c77a83ab377c4073281065fb855fMINIO_SHA256_ARM64=5c83cd2cf151717ba0243f73e1c7802ff36e272b67144bdd7f1f7d684fd6f03dsha256sum -c -fails the build on any mismatch.TARGETARCHdeclared without default (so--platform linux/arm64correctly selectsthe arm64 binary and hash).
ENTRYPOINT/CMDpreserve the composecommand:.image: gw2a-minio:RELEASE.2025-09-07T16-13-09Z+build: {context: ., dockerfile: docker/minio/Dockerfile}.restart: unless-stopped.Validation
docker compose config -qpasses for both files.--build-arg MINIO_SHA256_AMD64=00...) fails withsha256sum: WARNING: 1 computed checksum did NOT match.docker compose restart minio→ healthy, data survives (named volumeminiodata).restart=unless-stopped, in-networkhealth 200, same credential/round-trip validation passes.
RUN_INTEGRATION_TESTS=1 uv run pytest apps/api/tests/test_integration_minio.py -v→ 2 passed.Independent review
Two rounds; final verdict ACCEPT after fixing
TARGETARCHhandling (round 1 foundARG TARGETARCH=amd64default overriding BuildKit's automatic value — fixed toARG TARGETARCH).No
latest, no third-party image, no unrelated changes.