build(ci): publish multi-arch (amd64 + arm64) container image#568
Merged
build(ci): publish multi-arch (amd64 + arm64) container image#568
Conversation
Adds linux/arm64 to the published ghcr.io/datum-cloud/milo image so Apple Silicon and arm64 CI runners can pull and run milo without ImagePullBackOff. The Dockerfile builder stage is pinned to $BUILDPLATFORM and now honors $TARGETOS/$TARGETARCH for native cross-compilation under buildx; the reusable publish-docker workflow already exposes a `platforms` input, so the workflow change is a single extra line.
Contributor
ecv
approved these changes
Apr 16, 2026
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.
Summary
ghcr.io/datum-cloud/milofor bothlinux/amd64andlinux/arm64so Apple Silicon developer machines and arm64 CI runners can pull the image without hittingImagePullBackOff: no matching manifest for linux/arm64/v8.--platform=$BUILDPLATFORMand parameterizesGOOS/GOARCHvia$TARGETOS/$TARGETARCH, enabling fast native cross-compilation under buildx (no QEMU emulation needed for the build step; the runtime stage isgcr.io/distroless/static, which is COPY-only).datum-cloud/resource-metricsagainst milo on Apple Silicon.Test plan
publish-container-imagejob succeeds withplatforms: linux/amd64,linux/arm64.docker manifest inspect ghcr.io/datum-cloud/milo:<next-tag>lists bothlinux/amd64andlinux/arm64entries.ghcr.io/datum-cloud/milo:<next-tag>on an arm64 host (Apple Silicon / arm64 Kubernetes node) succeeds and the container starts.Notes
datum-cloud/actions/.github/workflows/publish-docker.yaml@v1.8.1already accepts aplatformsinput and wires it intodocker/setup-buildx-actionanddocker/build-push-action, so no cross-repo change is required.docker buildx build --platform=linux/amd64,linux/arm64 -t milo:multiarch-test .completed successfully on Apple Silicon (without--load, since multi-platform images can't be loaded into the local Docker engine in one shot). The arm64 binary built natively; the amd64 binary was cross-compiled by Go on the arm64 builder. No QEMU was required.