FromPlatformFlagConstDisallowed

輸出

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
...