説明
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