如何正确指定我的dockerfile的平台?

问题描述 投票:0回答:3

我正在尝试将 --platform=linux/amd64 标志添加到我的 dockerfile 的 FROM 语句中。我需要这样做,因为我正在使用 m1 笔记本电脑,并且默认架构 (linux/arm64/v8) 与我们的产品机器不兼容。整行应该是:

FROM --platform=linux/amd64 openjdk:11-jre-slim

这对于我的前端存储库(以节点作为基础映像)效果很好。但是,在后端存储库中,我收到此错误:

<name chain> expected, got '-'

所以这就像,出于某种原因根本不让我添加标志。

IntelliJ IDEA,Java

完整后端dockerfile:

FROM --platform=linux/amd64 openjdk:11-jre-slim
COPY config/dev.yml /opt/dropwizard/
COPY build/libs/smerge-1.0-SNAPSHOT-all.jar /opt/dropwizard/
EXPOSE 8080
WORKDIR /opt/dropwizard
CMD ["java", "-jar", "smerge-1.0-SNAPSHOT-all.jar", "server", "dev.yml"]

dockerfiles 的 --platform 标志上的 docker 文档 说:

可选的 --platform 标志可用于指定映像的平台,以防 FROM 引用多平台映像。例如,linux/amd64、linux/arm64 或 windows/amd64。默认情况下,使用构建请求的目标平台。

java docker dockerfile
3个回答
5
投票

在 Mac 上,我将此行添加到 .zprofile 中,这样可以立即处理所有事情。对我来说,将其添加到 .zprofile 可以确保访问终端时 DOCKER_DEFAULT_PLATFORM 存在于环境中。

导出 DOCKER_DEFAULT_PLATFORM=linux/amd64


3
投票

此外,我使用此 cmd 从 Apple Silicon MacBook 构建 docker 映像。

docker build --platform=linux/amd64 -t mydockerimage .

无需构建


0
投票

一时兴起,我将其放入我的 Dockerfile 中

FROM --platform=linux/amd64 php:5.6-apache

我在 Docker Desktop 中关闭了 Rosetta 并构建了它,它工作得很好。 通过这种方式,您可以根据每个图像进行设置,因为它速度较慢。 我不确定为什么在为 amd64 构建时它会抱怨 Rosetta,但我猜这与运行 amd64 程序不太一样。

© www.soinside.com 2019 - 2024. All rights reserved.