パイプ処理でpipefailが未設定

パイプの前段の失敗も検出するようにシェルを設定してください。

説明

pipefailが無効なシェルでは、通常、パイプ全体の終了状態が最後のコマンドで決まります。そのため、RUNの前段のコマンドが失敗しても、最後のコマンドが成功するとビルドステップが成功することがあります。

想定される影響

ダウンロードや前処理の失敗を見逃し、不完全な成果物がイメージに含まれるおそれがあります。

対処方法

イメージ内のシェルが対応していることを確認し、pipefailを有効にしてください。非対応の場合は、対応するシェルを明示的に選ぶか、各コマンドの失敗を個別に確認してください。

例

Bashでパイプ処理の失敗を伝える設定例です。pipefailはダウンロードしたスクリプトの信頼性を検証しません。実行前に入手元と完全性を別途確認してください。

変更前

dockerfile
FROM node:22

RUN curl -fsSL https://example.com/install.sh | bash

変更後

dockerfile
FROM node:22

SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN curl -fsSL https://example.com/install.sh | bash

参考資料