在docker文件中安装私有R包

时间:2019-08-16 21:19:11

标签: r dockerfile

我正在尝试首次使用Docker和ShinyProxy,并且在该过程的开始就一直在努力工作。

我开发了一些在本地运行良好的闪亮应用程序,我正在考虑在我网站的某些文章中部署它们。

那些闪亮的应用程序使用我自己编写的2个程序包,这些程序包位于计算机的本地位置。

如何在我的Dockerfile中安装这些私有R包,以便“容器”可以访问它们?

我看到了无数示例,这些示例从CRAN安装软件包,我对此没有任何问题。但是,我找不到从本地存储库安装自己的软件包的方法。

目前,我有一个名为“ DockerEC”的文件夹,其中包含以下文件:

'App.R'
'run_app.R'
'installpackages.R'
'Dockerfile'

在我的本地闪亮应用程序中,我只需使用以下命令即可安装这些软件包:

install.packages("/Users/name/Documents/R/Package_NAME", repos = NULL, type="source")

我在installpackages.R文件中写了这一行代码,但是由于出现错误:“无此文件或目录”而无法运行该文件。

我用过

COPY /Users/name/Documents/R/DockerEC/installpackages.R /Users/name/Documents/R/DockerEC/installpackages.R 

然后

RUN Rscript /Users/name/Documents/R/DockerEC/installpackages.R  

在我的docker文件中,但不知道为什么我找不到该文件?

有人有在dockerfile中安装私有R包的具体示例吗?我想念一个具体的例子来了解如何做...

1 个答案:

答案 0 :(得分:1)

尝试下面的Dockerfile,它对我有用:

FROM rocker/r-ver:3.6.1

RUN mkdir ./private_pkgs

COPY /Users/name/Documents/R/your_package.tar.gz ./private_pkgs/your_package.tar.gz

RUN R -e "install.packages('private_pkgs/your_package.tar.gz', repos = NULL, type = 'source')"