All Docker images MUST be built for both linux/amd64 and linux/arm64.
Never push a single-platform image to a tag that users pull (:latest, version tags).
ci-docker.yml(on push tomain): buildslinux/amd64,linux/arm64in onedocker buildxstep using QEMU emulation, pushes as:latestand:<sha>.docker-image.yml(on version tagv*): builds each platform on its native runner, then creates a combined multi-arch manifest withdocker buildx imagetools create.
Build and run locally (no push needed):
docker buildx build --platform linux/amd64,linux/arm64 -t abwebplode/cpab:local .To push a multi-arch image manually:
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t abwebplode/cpab:latest \
--push .Requires
docker buildxand QEMU. Install QEMU emulation once with:docker run --privileged --rm tonistiigi/binfmt --install all
- Do not build with
--platform linux/amd64only — arm64 users (Apple Silicon) will getno matching manifesterrors ondocker compose pull. - Do not add an
image:field todocker-compose.ymlpointing to the Hub image while also usingbuild:— it causes confusion between local builds and pulled images.