Repository navigation
build: studio image and BuildKit from the ECR Public mirrors, pinned by digest - #451
Merged
Merged
Conversation
…by digest Docker Hub's anonymous pull limit. Same official images, same index digests on both registries (2026-10-10): node:22-slim and moby/buildkit:buildx-stable-1.
Member
Author
|
ork2 review @a0336129: OK, with one disclosed gap.
|
Member
Author
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.
Release path: studio image and BuildKit from the ECR Public mirrors, pinned by digest
Why: Docker Hub's anonymous pull limit has been stopping builds (migrate staging web; this repo's
postgres-lineage, fixed in #450). A tag release pulls from Docker Hub twice: the image'snode:22-slimbase, and BuildKit fordocker/setup-buildx-action. #449 needs a tag release in the morning.Change:
Dockerfile: all threeFROM node:22-slim(deps,build,runtime) →public.ecr.aws/docker/library/node:22-slim@sha256:c3de60bf2f9dd0ac6370e6117950ff62d6e339527e7472301c9c78a017978392, the same ref as migrate#734. A header comment records the reason, the date, both digests, and how to update.release.yml:docker/setup-buildx-action@v4getsdriver-opts: image=public.ecr.aws/vend/moby/buildkit:buildx-stable-1@sha256:cec9f139f45e93c5c69c60f8b07cfad9f43f4ef6b6a6cd917527fea5ff2e3dea(the action's default tagbuildx-stable-1, now pinned), with the same kind of comment.Digest check (2026-10-10,
docker buildx imagetools inspect): both are an OCI image index (multi-arch), identical on both registries:docker.io/library/node:22-slim=public.ecr.aws/docker/library/node:22-slim=sha256:c3de60bf…978392docker.io/moby/buildkit:buildx-stable-1=public.ecr.aws/vend/moby/buildkit:buildx-stable-1=sha256:cec9f139…e3deaOn the BuildKit mirror:
public.ecr.aws/docker/librarycarries only Docker Official Images, and BuildKit isn't one.public.ecr.aws/vend/moby/buildkitis the mirror that serves it. I pinned it by digest, and the digest is the one Docker Hub serves formoby/buildkit:buildx-stable-1. The pull is content-addressed, so the mirror can't serve anything other than those exact bytes, whoever runs it. ORK decides whether that's trustworthy enough. The fallback is to drop thedriver-optsline (Docker Hub again).Proof
release.yml+ci.yml: one finding,SC2034 PATCH appears unusedat release.yml:37. It's pre-existing: the same finding on main's release.yml, in a line this PR doesn't touch. The YAML parses, and the step carries the newdriver-opts.docker buildx create --driver docker-container --driver-opt image=<the pinned ref> --bootstrap→ Statusrunning, BuildKit v0.33.1; then removed.docker build .: the base came from public.ecr.aws (load metadatafor the pinned ref);deps1–5 passed (corepack,pnpm install --frozen-lockfile);buildreachedpnpm build, which ran out of JS heap ("Reached heap limit", exit 134).ubuntu-latest, more memory than this VM) has built this same step on every release so far.release.ymlruns only on av*tag (noworkflow_dispatch), so the first tag release is the end-to-end proof. If it fails at the pull, reverting this PR restores the Docker Hub refs.ci.yml(ci: postgres service image from the ECR Public mirror, pinned by digest #450) is separate.