已解决
按照下面 zessx 的评论,我最终通过将添加到我的 zsh 个人资料中解决了问题。export DOCKER_DEFAULT_PLATFORM="linux/amd64"
我最近收到了一台用于工作的 MacBook Pro M2,当我
cdk deploy
使用它时遇到了问题。有一个 numpy 导入问题特别与其“C 扩展”相关。
原始错误是:没有名为“numpy.core._multiarray_umath”的模块。
我看到一旦 cdk 部署开始,Docker Desktop 的第一层就是“ARCHITECTURE arm64”。我猜这至少是构建在实际尝试在 x64 AWS 架构上运行时遇到问题的部分原因。我是否无法在本地进行这样的构建?
谢谢!
我尝试了几个不同版本的 numpy 来导入
从同事的 x64 笔记本电脑部署相同的代码并运行。
Docker 将尝试使用适合您本地架构的镜像。新的 Apple M1/M2 使用 ARM64 架构,因此 Docker 将默认搜索 ARM64 映像。
就您而言,运行时
cdk deploy
您可能正在后端构建图像。该映像将使用 ARM64 架构构建,但预计将在 AMD64 架构上运行。
您有多种方法可以确保为正确的拱门构建图像。
--platform
标志docker build -t $IMAGE --platform linux/amd64 .
docker push ${AWS_ACCOUNT}.dkr.ecr.${AWS_REGION}.amazonaws.com/${IMAGE}
--platform
标志FROM ruby:latest as development
RUN …
FROM --platform=linux/amd64 ruby:latest as production
RUN …
然后,您可以在 Docker 命令中指定要构建的目标:
docker build -t $IMAGE --target production .
DOCKER_DEFAULT_PLATFORM
环境变量export DOCKER_DEFAULT_PLATFORM="linux/amd64"
您还可以在
.bashrc
/.zshrc
中添加此行,但请记住,您将始终使用 AMD64 模拟,即使对于本地项目(其中可以使用本机 ARM64 映像)也是如此。我不会推荐这个。