使用 Dockerfile 运行 做一些事情但忽略错误

Do something using Dockerfile RUN but ignore errors

我想我想要 Docker 运行 一些我知道会失败的东西,然后使用修复来修复它,即

RUN dpkg -i wkhtmltox_0.12.6-1.focal_arm64.deb
RUN apt-get update
RUN apt fix-broken install

似乎 apt 认识到 wkhtmltox 由于缺少软件包而未能安装,然后能够安装所有这些软件包。 ...我觉得。

无论如何,即使尝试这样做也意味着允许 Docker 构建在错误的退出代码后继续。

我可以这样做吗?

解决方法如下:

RUN dpkg -i wkhtmltox_0.12.6-1.focal_arm64.deb || true
RUN apt-get update || true
RUN apt fix-broken install || true

除了让它正常工作之外,您可能真的想要一些改进!

  • 验证dpkg成功引入包
  • 使用apt-get代替apt以避免稳定界面警告
  • 运行 您所有的 apt 命令都在同一个块中,末尾带有 clean 以减小容器大小
# NOTE dpkg -i exits nonzero due to missing dependencies
RUN dpkg -i wkhtmltox_0.12.6-1.focal_arm64.deb ; \
    dpkg -l | grep wkhtmltox
RUN apt-get update && \
    apt-get -f install && \
    apt-get clean