如何为 docker 文件中的 docker 映像提供参数,以便它仍然可以在 Apple M1 机器中工作

Ely*_*lye 2 java macos docker dockerfile apple-m1

我曾经能够下载 openjdk:8-jdk-slim 如下

docker run -it --name my-container openjdk:8-jdk-slim
Run Code Online (Sandbox Code Playgroud)

转移到 Apple M1 MacBook Pro 后,我必须使用此参数,如https://docs.docker.com/docker-for-mac/apple-silicon/--platform linux/amd64中所述

docker run -it --platform linux/amd64 --name my-container openjdk:8-jdk-slim
Run Code Online (Sandbox Code Playgroud)

但对于 Dockerfile 我有

FROM openjdk:8-jdk-slim

// Other codes
Run Code Online (Sandbox Code Playgroud)

如何向其中添加所需的参数,以便 Dockerfile 仍然可以在我的 Apple M1 MacBook Pro 上运行?

ane*_*yte 6

您也可以向语句添加--platform选项:FROM

FROM --platform=linux/amd64 openjdk:8-jdk-slim
...
Run Code Online (Sandbox Code Playgroud)

Dockefile 参考中提到了这一点:

如果引用多平台图像,可选--platform标志可用于指定图像的平台。FROM例如,linux/amd64linux/arm64、 或windows/amd64。默认情况下,使用构建请求的目标平台。可以在此标志的值中使用全局构建参数,例如自动平台 ARG 允许您将阶段强制为本机构建平台 ( --platform=$BUILDPLATFORM),并使用它在阶段内交叉编译到目标平台。