Подтвердить что ты не робот

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 останавливает сборку после получения этой ошибки. Есть ли способ, которым я могу поручить Докеру просто игнорировать это?

4b9b3361

Ответ 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 (или какого-либо другого исполнения, это не ограничивается).