Dockerfile的构build – 可以忽略错误?

我有一个Dockerfile。 构build映像时,构build失败,出现此错误:

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 

这实际上是无害的。 库构build得很好,但是Docker收到这个错误后会停止构build。 有什么方法可以指导Docker忽略这个吗?

当然。 Docker只是响应Dockerfile RUN shell脚本返回的错误代码。 如果你的Dockerfile有这样的东西:

 RUN make 

你可以用下面的代替:

 RUN make; exit 0 

这将始终返回一个0 (成功)退出代码。 这里的缺点是,即使在构build过程中实际的错误,您的图像也会成功构build。

这可能会对那些在图像上的潜在错误不会 被忽视/logging的人感兴趣。 (也没有足够的代表评论,所以这里作为答案。)

正如所指出的那样, RUN make; exit 0的缺点在于RUN make; exit 0 RUN make; exit 0是你不知道,如果你的构build失败。 因此,而是使用像这样的东西:

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

就像这样,你会通过docker的图像构build过程日志得到通知,并且你可以看到在make过程中究竟发生了什么坏事(或者其他的执行,这并不限于make)。