Сборка 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 просто игнорировать это?
3 ответа
Конечно. Docker просто отвечает на коды ошибок, возвращаемые 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!"
Таким образом, вы получаете уведомление через журнал процесса сборки образа Docker, и вы можете увидеть, что именно пошло не так во время make
(или что бы то ни было, выполнение не ограничено).
Вы также можете использовать стандартную ошибку игнорирования bash || true
, что хорошо, если вы находитесь в середине цепочки:
RUN <first stage> && <job that should not fail> || true && <next stage>