FromPlatformFlagConstDisallowed (FROM --platform 标志禁止使用常量)

输出

FROM --platform flag should not use constant value "linux/amd64"

描述

在 Dockerfile 的 FROM 指令中指定 --platform 会强制镜像只在一个目标平台上构建。这使得无法从该 Dockerfile 构建多平台镜像,并且您必须在与 --platform 中指定的平台相同的平台上进行构建。

推荐的方法是:

  • 在 Dockerfile 中省略 FROM --platform,并在命令行上使用 --platform 参数。
  • --platform 参数使用 $BUILDPLATFORM 或其他变量组合。
  • 阶段名称应包含平台、操作系统或架构名称,以表明它只包含特定于平台的指令。

示例

❌ 不推荐: 对 --platform 使用常量参数

FROM --platform=linux/amd64 alpine AS base
RUN apk add --no-cache git

✅ 推荐: 使用默认平台

FROM alpine AS base
RUN apk add --no-cache git

✅ 推荐: 使用元变量

FROM --platform=${BUILDPLATFORM} alpine AS base
RUN apk add --no-cache git

✅ 推荐: 在指定目标架构的多阶段构建中使用

FROM --platform=linux/amd64 alpine AS build_amd64
...

FROM --platform=linux/arm64 alpine AS build_arm64
...

FROM build_${TARGETARCH} AS build
...
页面选项