禁止使用 FromPlatformFlag 常量
目录
输出
FROM --platform flag should not use constant value "linux/amd64"描述
在 Dockerfile 的 FROM 指令中指定--platform 会强制镜像仅在一个目标平台上构建。这会阻止从此 Dockerfile 构建多平台镜像,并且必须在与--platform中指定的平台相同的平台上构建。
推荐的方法是:
- 省略 Dockerfile 中的
FROM --platform并使用命令行上的--platform参数。 - 使用
$BUILDPLATFORM或其他变量组合作为--platform参数。 - 阶段名称应包含平台、操作系统或架构名称,以指示它仅包含特定于平台的指令。
示例
❌ 错误:对--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
...