小编Vic*_*ria的帖子

当 R 包安装返回错误时让 Docker 镜像构建失败

我正在尝试使用 Dockerfile 创建基于 Rocker 的自定义 Docker 映像。在 Dockerfile 中,我使用以下命令从自定义 GitLab 服务器中提取自己的 R 包:

RUN R -e "devtools::install_git('[custom gitlab server]', quiet = FALSE)"

通常一切正常,但我注意到,当 GitLab 服务器关闭或运行 Docker 的计算机 RAM 内存不足时,该包无法正确安装并在 R 控制台中返回错误消息。这种行为是可以预料的。但是,Docker 没有注意到 R 产生的错误,并继续评估 Dockerfile 的其余部分。我希望 Docker 在发生这种情况时无法构建映像。这样,我最终可以阻止 Kubernetes 自动部署不完整的 Docker 容器。

到目前为止,我已经想到了两种可能的解决方案,但我在执行方面遇到了困难:

  1. R级别:环绕tryCatch()devtools::install_git捕获错误。但然后呢?使用stop?这会导致 Docker 构建过程也停止吗?可withCallingHandlers()用于?
  2. Dockerfile级别:使用shell命令检查错误?我找不到 的内容,R --help因为我目前没有 Linux 机器。所以我不确定R -e实际做了什么(我认为执行)以及哪些其他命令可以与R.

似乎这里这里讨论了类似的问题,但我不明白他们是如何解决的。

那么如何确保没有自定义包的 Docker 镜像最终不会在 Kubernetes 集群上运行呢?

r docker kubernetes dockerfile

5
推荐指数
1
解决办法
1585
查看次数

标签 统计

docker ×1

dockerfile ×1

kubernetes ×1

r ×1