Dockerfile build - можно игнорировать ошибку?
У меня есть 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 останавливает сборку после получения этой ошибки. Есть ли способ, которым я могу поручить Докеру просто игнорировать это?
Ответы
Ответ 1
Конечно. Docker просто отвечает на коды ошибок, возвращаемые сценариями оболочки RUN
в Dockerfile
. Если ваш Dockerfile
имеет что-то вроде:
RUN make
Вы можете заменить это следующим образом:
RUN make; exit 0
Это всегда будет возвращать код выхода 0
(success). Недостатком здесь является то, что ваше изображение будет успешно работать, даже если в процессе сборки есть реальные ошибки.
Ответ 2
Это может представлять интерес для тех, чьи потенциальные ошибки в их изображениях недостаточно безопасны, чтобы остаться незамеченными/занесенными в журнал. (Кроме того, недостаточно комментариев для комментариев, так что вот как ответ.)
Как указано, недостатком RUN make; exit 0
является то, что вы не узнаете, если ваша сборка не удалась. Следовательно, скорее используйте что-то вроде:
make test 2>&1 > /where/ever/make.log || echo "There were failing tests!"
Таким образом, вы получаете уведомление через журнал процесса сборки образа докеры, и вы можете видеть, что точно не срабатывало во время make
(или какого-либо другого исполнения, это не ограничивается).