설명
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