FROM のプラットフォーム指定の意図の確認

各ビルドステージのプラットフォームを実際の対象に合わせてください。

説明

FROM の --platform は、そのステージで使用する OS とアーキテクチャを選択します。linux/arm64 のように固定すると、別の対象向けのビルドで意図しないプラットフォームを使ったり、エミュレーションが必要になったりする場合があります。

プラットフォームの指定自体が誤りではありません。意図したクロスコンパイルや、$BUILDPLATFORM 上でビルドツールを実行するために必要な場合もあります。

想定される影響

  • 対象と異なるバイナリを作成したり、実行に失敗したりする場合があります。
  • 不要なエミュレーションでビルドが遅くなる場合があります。

対処方法

  • 固定のプラットフォームが必要か確認し、ビルドの対象に従うステージでは不要な FROM --platform 指定を削除してください。
  • buildx --platform などでビルド対象を指定し、必要な各プラットフォームで結果を確認してください。指定を削除するだけでアプリケーションの移植性が保証されるわけではありません。

例

ステージのプラットフォーム選択だけを比較します。ベースイメージとアプリケーションの依存関係も対象のプラットフォームに対応している必要があります。

変更前

dockerfile
FROM --platform=linux/arm64 node:22-alpine

WORKDIR /app
COPY . .

変更後

dockerfile
FROM node:22-alpine

WORKDIR /app
COPY . .

補足:

  • 変更前: ステージを linux/arm64 に固定します。意図した ARM64 専用の構成なら使用できます。
  • 変更後: ステージがビルドの対象プラットフォームに従います。実際の実行互換性は別途確認する必要があります。

参考資料