Files
WeHub Mirror fa90340b1a
Test All Applications / Test repository tooling (push) Has been cancelled
Test All Applications / Test FastAPI (push) Has been cancelled
Test All Applications / Test Next.js (push) Has been cancelled
WeHub snapshot of bed1fc6c31b94d844191893a1c212d8fbe0f6d0b
2026-08-07 16:57:15 +08:00

2.2 KiB

Multi-Arch Docker Release

This document describes how to publish presenton as a multi-architecture image to GitHub Container Registry (ghcr.io).

The flow is:

  1. Build the image separately on each native platform.
  2. Push an architecture-specific tag from each machine.
  3. Create a multi-arch manifest that points to both images.
  4. Promote that manifest to latest.

Expected Local Image

After a successful local production build, the image should exist as:

presenton-3-production:latest

Release Tags

This example uses version v0.9.0-beta:

ghcr.io/presenton/presenton:v0.9.0-beta-arm64
ghcr.io/presenton/presenton:v0.9.0-beta-amd64
ghcr.io/presenton/presenton:v0.9.0-beta
ghcr.io/presenton/presenton:latest

1. Push the ARM64 Image From macOS

Run this on the Mac machine that built the ARM64 image:

docker tag presenton-3-production:latest \
  ghcr.io/presenton/presenton:v0.9.0-beta-arm64

docker push ghcr.io/presenton/presenton:v0.9.0-beta-arm64

2. Push the AMD64 Image From Linux

Run this on the Linux machine that built the AMD64 image:

docker tag presenton-3-production:latest \
  ghcr.io/presenton/presenton:v0.9.0-beta-amd64

docker push ghcr.io/presenton/presenton:v0.9.0-beta-amd64

3. Create the Multi-Arch Manifest

After both architecture-specific images are pushed, run this on either machine:

docker buildx imagetools create \
  -t ghcr.io/presenton/presenton:v0.9.0-beta \
  ghcr.io/presenton/presenton:v0.9.0-beta-amd64 \
  ghcr.io/presenton/presenton:v0.9.0-beta-arm64

4. Promote the Release to latest

docker buildx imagetools create \
  -t ghcr.io/presenton/presenton:latest \
  ghcr.io/presenton/presenton:v0.9.0-beta

5. Verify the Published Manifests

docker buildx imagetools inspect ghcr.io/presenton/presenton:v0.9.0-beta

docker buildx imagetools inspect ghcr.io/presenton/presenton:latest

Both manifests should include:

linux/amd64
linux/arm64

Result

After the release completes, these tags should exist:

  • v0.9.0-beta-arm64: native ARM64 image
  • v0.9.0-beta-amd64: native AMD64 image
  • v0.9.0-beta: multi-arch manifest
  • latest: multi-arch manifest pointing at the same release