[docker] Dockerfile 빌드-오류를 무시할 수 있습니까?

Dockerfile이 있습니다. 이미지를 빌드 할 때 다음 오류로 인해 빌드가 실패합니다.

automake: error: no 'Makefile.am' found for any configure output
Error build: The command [/bin/sh -c aclocal && autoconf && automake -a] returned a non-zero code: 1

실제로는 무해합니다. 라이브러리는 정상적으로 빌드되지만 Docker는이 오류를 수신하면 빌드를 중지합니다. Docker에게 이것을 무시하도록 지시 할 수있는 방법이 있습니까?



답변

확실한. Docker는 .NET Framework의 RUN셸 스크립트에서 반환 된 오류 코드에 응답 합니다 Dockerfile. 귀하의 경우 Dockerfile뭔가를 같이있다 :

RUN make

다음으로 바꿀 수 있습니다.

RUN make; exit 0

이것은 항상 0(성공) 종료 코드를 반환합니다 . 여기서 단점 은 빌드 프로세스에 실제 오류 있어도 이미지가 성공적으로 빌드 된 것처럼 보인다는 것 입니다.


답변

이것은 이미지의 잠재적 오류 가 눈에 띄지 않거나 기록 될만큼 무해하지 않은 사람들에게 흥미로울 수 있습니다 . (또한 댓글을 작성할 담당자가 충분하지 않으므로 여기에 답변을드립니다.)

지적했듯이의 단점은 RUN make; exit 0빌드가 실패했는지 알 수 없다는 것입니다. 따라서 다음과 같이 사용하십시오.

make test 2>&1 > /where/ever/make.log || echo "There were failing tests!"

이와 같이 도커 이미지 빌드 프로세스 로그를 통해 알림을 받고 정확히 make무엇이 잘못되었는지 확인할 수 있습니다 (또는 다른 실행이 수행되는 데 제한되지 않음).


답변

표준 bash ignore error를 사용할 수도 있습니다. || true이는 체인 중간에있는 경우 좋습니다.

RUN <first stage> && <job that might fail> || true && <next stage>


답변