파이프 명령에서 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

참조