Dockerfile 构建 - 可以忽略错误吗?
Dockerfile build - possible to ignore error?
我有一个 Docker 文件。构建映像时,构建失败并出现以下错误:
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 忽略它吗?
当然可以。 Docker 只是响应 return 由 Dockerfile
中的 RUN
shell 脚本编写的错误代码。如果你的 Dockerfile
有类似的东西:
RUN make
您可以将其替换为:
RUN make; exit 0
这将始终 return 一个 0
(成功)退出代码。此处的缺点是,即使在构建过程中存在 个实际错误,您的图像似乎构建成功。
这可能会对那些图像中的潜在错误不够无害去unnoticed/logged的人感兴趣. (另外,没有足够的代表发表评论,所以在这里作为答案。)
正如所指出的,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>
我有一个 Docker 文件。构建映像时,构建失败并出现以下错误:
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 忽略它吗?
当然可以。 Docker 只是响应 return 由 Dockerfile
中的 RUN
shell 脚本编写的错误代码。如果你的 Dockerfile
有类似的东西:
RUN make
您可以将其替换为:
RUN make; exit 0
这将始终 return 一个 0
(成功)退出代码。此处的缺点是,即使在构建过程中存在 个实际错误,您的图像似乎构建成功。
这可能会对那些图像中的潜在错误不够无害去unnoticed/logged的人感兴趣. (另外,没有足够的代表发表评论,所以在这里作为答案。)
正如所指出的,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>