使用 Apple Silicon(或其他基于 ARM64 的架构)构建的 Docker 镜像在将镜像部署到基于 Linux 或 Windows 的 AMD64 环境(例如 AWS EC2、ECS 等)时可能会产生问题。例如,您可以尝试上传您制作的 docker 镜像在 M1 芯片上复制到 AWS ECR 存储库,但它无法运行。因此,您需要一种在 ARM64 架构上构建基于 AMD64 的图像的方法,无论是使用 Docker build(用于单个图像)还是 docker-compose build(例如,用于在 docker compose 网络中运行的多图像应用程序)。
对于构建单个 docker 映像:使用命令行设置您的环境变量或按照接受的答案中的建议修改您的.bashrc
或文件。.zshenv
export DOCKER_DEFAULT_PLATFORM=linux/amd64
或者,在 Dockerfile 中,在FROM
命令中包含以下标志(对于多阶段Dockerfile
构建,该标志仅在第一阶段需要):
FROM --platform=linux/amd64 python:3.7-alpine
对于构建镜像作为docker-compose
构建的一部分,包括platform: linux/amd64
每个服务的。例如:
services:
frontend:
platform: linux/amd64
build: frontend
ports:
- 80:80
depends_on:
- backend
backend:
platform: linux/amd64
build: backend