如何在 Docker 图像中安装 R 库 "ggpubr"?

How to install R library "ggpubr" in a Docker image?

我尝试在 docker 映像中安装 R 库 ggpubr。我拉了 r-base:3.6.3 以下是我的 Dockerfile:

FROM r-base:3.6.3
COPY . /usr/local/src/myscripts
WORKDIR /usr/local/src/myscripts
RUN Rscript Rinstall_packages.R

这是我的 Rinstall_packages.R 文件:

install.packages("ggplot2")
install.packages("reshape")
install.packages("ggpubr")
install.packages("stringr")

每次我得到这样的输出:

ERROR: dependency ‘rio’ is not available for package ‘car’
* removing ‘/usr/local/lib/R/site-library/car’
ERROR: dependency ‘car’ is not available for package ‘rstatix’
* removing ‘/usr/local/lib/R/site-library/rstatix’
ERROR: dependency ‘rstatix’ is not available for package ‘ggpubr’
* removing ‘/usr/local/lib/R/site-library/ggpubr’

The downloaded source packages are in
        ‘/tmp/Rtmp0tYFyC/downloaded_packages’
Warning messages:
1: In install.packages("ggpubr") :
  installation of package ‘curl’ had non-zero exit status
2: In install.packages("ggpubr") :
  installation of package ‘rio’ had non-zero exit status
3: In install.packages("ggpubr") :
  installation of package ‘car’ had non-zero exit status
4: In install.packages("ggpubr") :
  installation of package ‘rstatix’ had non-zero exit status
5: In install.packages("ggpubr") :
  installation of package ‘ggpubr’ had non-zero exit status

我尝试以批处理模式安装库:

docker run -ti --rm r-base:3.6.3 bash
apt-get update && apt-get install libcurl4-openssl-dev
R
>install.packages("ggpubr")

有效。但是,我退出bash后,仍然无法使用该库。

有没有人可以帮我安装这个库?

如果您对容器(即 运行 图像)进行更改,这些更改是在 临时 层中进行的,在容器停止和删除后不会持续存在.您必须更改图像,以便在启动容器时一切可用。所以你必须改变 Dockerfile.

您确实添加了系统库 libcurl4-openssl-dev 确实可以正常工作,因此请将其添加到您的 Dockerfile 第二行。

FROM r-base:3.6.3
RUN apt-get update && apt-get install libcurl4-openssl-dev
COPY . /usr/local/src/myscripts
WORKDIR /usr/local/src/myscripts
RUN Rscript Rinstall_packages.R

还请记住,调用 Rscript 的启动方式与启动交互式 R 的方式不同 R(选项、预加载库可能不同)

我建议@akrun 更明确地说明参数以避免这些警告。