FromPlatformFlagConstDisallowed
もくじ
出力
FROM --platform flag should not use constant value "linux/amd64"
(訳: FROM の --platform フラグでは定数値 "linux/amd64" を用いるべきではありません)
内容説明
Dockerfile 内にて --platform
を指定すると FROM
命令はただ一つのプラットフォームを対象としてイメージビルドを行います。
これを行ってしまうと、この Dockerfile からはマルチプラットフォームイメージのビルドができなくなります。
つまり --platform
に指定したプラットフォームしかビルドできないということです。
この場合に推奨される方法は以下のとおりです。
- Dockerfile では
FROM --platform
の記述を行わず、コマンドラインから--platform
引数として指定する。 --platform
引数として$BUILDPLATFORM
あるいは他の変数の組み合わせを指定する。- ステージ名にはプラットフォーム、OS、アーキテクチャーを必ず含めるようにして、そこではプラットフォーム固有の命令のみを実現するようにする。
例
❌ 不可: --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
...