我正在努力定义一个Docker容器,该容器可以在云环境中启动,并在我们公司的数据库上运行一些报告并自行降低运行速度,而数据科学团队(包括我自己)的参与则尽可能少。
我几乎已经完成了所有事情的启动和运行,但有一个令人烦恼的例外-报告是使用我们使用了几年的一些代码在R中完成的。我在Rocker诗句的基础上构建,并添加了需求库。
关于需求的烦人的事情(在本用例中)是,当它第一次运行时,它会询问以下内容:
ng generate component
在典型的交互式设置中,这很好,我只需键入“是”,然后按Enter键就可以了。但是,当我希望整个环境每周独立构建和运行一次时,我不想回答这个问题。我想假设是。
到目前为止,我尝试过的内容包括以下各项:
>library('needs')
Should `needs` load itself when it's... needed? (this is recommended)
1: No
2: Yes
Selection:
没有一个可以解决问题。 needs documentation以后将以编程方式更改此设置,但在首次运行需要定义时不提供此设置:
建议使用该功能,以便在出现提示时自动加载功能 第一次以交互方式加载程序包。更改此设置 稍后,运行require ::: autoload(TRUE)或需要::: autoload(FALSE)进行转向 分别自动打开或关闭。
我也尝试过安静地安装需求,但也无济于事。不幸的是,我无法在Dockerfile中运行bash命令来响应“是”,或者至少我没有找到方法。
我想避免删除需求依赖项,因为这将涉及大量代码重构。
关于如何解决此问题的任何想法?
谢谢! :] -文斯
更新
解决方案有点笨拙,但是在我的Dockerfile中,我正在对该文件进行vim编辑,该文件需要分配给sysfile变量:
library('needs', quiet=TRUE)
library('needs', quietly=TRUE)
suppressMessages(library('needs', quietly=TRUE))
suppressWarnings(suppressMessages(library('needs', quietly = T)))
suppressPackageStartupMessages(library('needs', quietly=TRUE))
对于我来说是/ usr / local / lib / R / site-library / needs / extdata / promptUser,然后将其内容从“ 1”更改为“ 0”解决了我的问题。
答案 0 :(得分:0)
一个更好的解决方案可能是这样做,这样它就不会首先提出问题。您可以查看它在github上的程序包加载时运行的代码:https://github.com/cran/needs/blob/master/R/needs-package.R
如果您设置了它事先检查的选项,则无需首先提出问题:
options(needs.promptUser = FALSE)