Skip to content

chore: take base images off Docker Hub (#87) - #88

Merged
dthinkr merged 1 commit into
mainfrom
chore/base-images-off-dockerhub
Sep 9, 2026
Merged

chore: take base images off Docker Hub (#87)#88
dthinkr merged 1 commit into
mainfrom
chore/base-images-off-dockerhub

Conversation

@dthinkr

@dthinkr dthinkr commented Sep 9, 2026

Copy link
Copy Markdown
Member

Ref #87

Completes the work started in #85. That change removed the Docker Hub account from the deployment path; this removes Docker Hub from the build chain as well.

Change

File before after
docker/Dockerfile.back python:3.11-slim public.ecr.aws/docker/library/python:3.11-slim
docker/Dockerfile.ngrok alpine:latest public.ecr.aws/docker/library/alpine:latest

Both are Docker Official Images; AWS mirrors them and serves identical content without an account.

Why it is worth doing even though nothing is broken

Docker Hub rate-limits anonymous pulls per source address, and CI runners share egress addresses. A build can therefore start failing for reasons unrelated to any change in this repository. The ngrok image is rebuilt on the deployment host during every deploy, so the same limit fails a deploy rather than merely a build — and after the handover there will be nobody positioned to recognise that failure mode quickly.

Verification

Both images built from the new bases and run:

backend python:  Python 3.11.16
backend uv:      uv 0.12.11
ngrok binary:    ngrok version 2.3.41

Every remaining base reference, for the record:

docker/Dockerfile.back:5:  FROM public.ecr.aws/docker/library/python:3.11-slim
docker/Dockerfile.back:11: COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
docker/Dockerfile.ngrok:3: FROM public.ecr.aws/docker/library/alpine:latest

Nothing points at Docker Hub.

Not included

alpine:latest and uv:latest remain floating tags. Pinning them would make builds reproducible and protect against an upstream major version breaking the build unattended, but that is a separate change with its own review.

Note

Merging triggers a real deployment.

🤖 Generated with Claude Code

Both Dockerfiles fetched their base image from Docker Hub. No account was
involved, since these are public images, but Docker Hub rate-limits anonymous
pulls per source address and CI runners share those addresses, so a build can
begin failing for reasons unrelated to any change here. The ngrok image is
built on the deployment host during every deploy, so the same limit fails a
deploy rather than just a build.

Both are Docker Official Images and are mirrored by AWS at
public.ecr.aws/docker/library/, which serves the same content without an
account and with far more generous anonymous limits.

With this change nothing in the build chain points at Docker Hub: the backend
base and the ngrok base come from the AWS mirror, and uv already came from
ghcr.

Verified by building both images from the new bases and running them:
Python 3.11.16, uv 0.12.11, ngrok 2.3.41.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@dthinkr
dthinkr merged commit ced8105 into main Sep 9, 2026
@dthinkr
dthinkr deleted the chore/base-images-off-dockerhub branch September 9, 2026 10:15
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