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 一旦收到此错误就会停止构建。有什么办法能让多克忽略这个吗?

104283 次浏览

当然。Docker 只是响应由 Dockerfile中的 RUN shell 脚本返回的错误代码。如果你的 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期间到底出了什么问题(或者执行其他任何问题,这不限于 make)。

您还可以使用标准的 bash 忽略错误 || true,如果您处于链的中间,这是很好的:

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