使用Dockerfile RUN执行某些操作,但忽略错误



我想让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以避免出现稳定的接口警告
  • 在最后使用clean的同一块中运行所有apt命令,以减小容器大小
# 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

最新更新