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