在 M1 芯片上构建 Docker 镜像可能导致部署兼容性问题,本文介绍几种强制构建 amd64 架构的方法,确保可在传统平台顺利运行。
在Linux或者Window等AMD64架构的机器上(AWS EC2、ECS, 阿里云函数计算等)使用苹果M1芯片上的构建的Docker镜像(或者其他ARM64架构的机器构建的镜像)会带来一些问题。因此为了在上述平台部署苹果芯片构建的镜像我们需要指定构建AMD64架构的镜像。
有几种方法可以实现:
在你的环境中指定
DOCKER_DEFAULT_PLATFORM参数你可以直接在构建之前运行
export DOCKER_DEFAULT_PLATFORM=linux/amd64,或者把这句话放到你的.bashrc、.zshenv或者.zshrc等文件中,这样可以避免每次都去设置在
Dockerfile的From中指定平台比如
FROM --platform=linux/amd64 python:3.7-alpine如果使用
docker-compose构建,可以指定paltform: linux/amd64services: servername: platform: linux/amd64 ......
参考来源: https://stackoverflow.com/questions/65612411/forcing-docker-to-use-linux-amd64-platform-by-default-on-macos
如果觉得文章有值得讨论的地方,欢迎留言和我交流!
如果有任何疑问或者不同意见,欢迎留言一起讨论!