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


112

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에게 이것을 무시하도록 지시 할 수있는 방법이 있습니까?

답변:


220

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

RUN make

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

RUN make; exit 0

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


2
실행하려고 할 때 여기에 왔습니다 service php7-fpm start. 1을 반환하고 RUN이 실패합니다. 사용하는 service php7-fpm start; service php7-fpm status것이 트릭 을 수행합니다. 두 명령을 별도로 실행하면 문제가 발생하기 때문에 빌드 중에 문제가 해결되는 것 같습니다.
igorsantos07

소스에서 Qt5를 빌드하려고 할 때 여기에 왔습니다. 잘 빌드되지만 Qt 빌드 프로세스에 빌드 시간 테스트가 make에서 실행된다는 사실과 결합 된 동시 빌드를 사용하면 (의도적으로 실패한) RUN 명령이 오류 (2)로 종료되었습니다. 이것이 문제를 해결할 수 있기를 바랍니다!
Lennart Rolland 2011

33

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

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

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

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


이것은 과소 평가 된 답변입니다. 내 사용 사례는 일부 패키지 목록에 도달 할 수없고 apt-get update -y실패했습니다.
Silviu Burcea

14

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

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

내가 필요했던 것 :) 더 나은 것은 작업이 실패하면 실패하는 것이지만 다음 단계 (정리) 후에
csomakk 14:44에
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.