【问题标题】:Stop docker when run command returns error code?运行命令返回错误代码时停止泊坞窗?
【发布时间】:2019-11-01 19:51:09
【问题描述】:

当一个 RUN 命令返回错误代码时,如何告诉 Docker 停止执行 Dockefile?

我有一个像这样的 Dockerfile:

FROM ubuntu:18.04
RUN apt install -yq `cat requirements.txt | tr "\\n" " "`
RUN ./some_other_setup.sh
RUN ./my_tests.sh

如果出现短暂的网络中断,apt install 有时会失败。但是,Docker 将继续执行其他 RUN 命令,即使它们也会失败,因为它们依赖于 apt install 的成功。

【问题讨论】:

  • 看看this的回答,我想这就是你要找的。​​span>
  • 一些apt 错误实际上是警告消息,它们仍将退出代码返回为0。看看this 问题,它提供了许多选项来捕获这些警告并根据它们操作退出代码。
  • @FedericoMoya 这不是我问的相反吗?我希望 Docker 在出现错误时停止,但事实并非如此。这个问题是说他们不希望 Docker 因错误而停止,但确实如此。
  • 任何时候RUN 执行的命令返回一个非零的退出代码,构建将停止。确保使用&& 而不是; 链接您的命令。

标签: docker


【解决方案1】:

如果你想捕捉错误并停止,你可以像 linux 脚本那样做

RUN set -e && apt install -yq `cat requirements.txt | tr "\\n" " "`

所以set -e 将捕获所有错误并在发生任何错误时停止。

您可以通过添加RUN apt-get install -f 来防止失败的apt install,这将安装缺少的依赖项。

如果apt-get/apt install 有任何错误你可以做

apt-get install [your stuff] || true

即使出现错误也会始终通过,然后您执行apt-get install -f,因此您始终拥有所需的所有依赖项

【讨论】:

    猜你喜欢
    • 2019-01-15
    • 1970-01-01
    • 2015-10-08
    • 2020-07-04
    • 2019-09-19
    • 2016-05-24
    • 1970-01-01
    • 2021-05-02
    • 2017-10-12
    相关资源
    最近更新 更多