【发布时间】:2015-01-14 23:57:39
【问题描述】:
我正在尝试构建一个小型 R 容器,该容器为我想在 Google Compute Engine 上的 docker 容器中运行的代码安装一些包。
我需要安装(例如)jsonlite
在我的 dockerfile 中有一行可以做到这一点:
RUN Rscript -e 'install.packages("jsonlite", repo="http://cran.ma.imperial.ac.uk/")'
但是,当我尝试在计算引擎上构建包含此行的 dockerfile 时, 并没有安装。源 tarball 已下载到 /tmp/Rsomething,但实际上并未安装该软件包。我必须在压缩包上手动运行R CMD INSTALL,安装成功。
当我在本地的同一个 dockerfile 上运行 docker build . 时,一切正常,并且软件包已正确安装。
AFAIK,这在 2-3 个月前还没有发生 - 我前段时间有一个成功的缓存构建。
这里有什么问题?是 R 还是 docker、计算引擎还是三者的混合体?
我目前的解决方法是添加
RUN find /tmp/ -name '*.tar.gz' -exec R CMD INSTALL '{}' \;
到 docker 文件的末尾,但如果未以正确的顺序找到 tarball,则似乎是在依赖项之前安装了东西(有时),然后就不起作用了。
【问题讨论】:
标签: r docker google-compute-engine