如果你的构建机是 x86_64,想要跨平台构建 ARM64 镜像
你就需要正确地使用 Docker Buildx + QEMU,而不仅仅是加个 —platform=linux/arm64。一个常见的完整示例:
(可选)先安装并启用 QEMU
docker run —rm —privileged multiarch/qemu-user-static —reset -p yes
创建并使用 buildx builder
docker buildx create —use —name mybuilder docker buildx inspect —bootstrap
现在使用 buildx 构建真正的 ARM64 镜像
docker buildx build —platform=linux/arm64 -t xxxx.dkr.ecr.us-west-2.amazonaws.com/app-xxx:v8 —push . .
这样做才能保证生成的镜像里所有的二进制文件都是针对 ARM64 的。
如果你只是用老版本 Docker(不支持 buildx),在本地 x86 环境里加 --platform=linux/arm64 通常不会真正跨编译,会导致镜像里依旧是 x86_64 的可执行文件。部署到 ARM64 就会报 exec format error