【发布时间】:2020-02-17 23:21:37
【问题描述】:
我正在尝试在 Python Docker 映像中安装多个 R 包。我有这么小的Dockerfile:
# Python 3.7.5
FROM python:3.7.5
ENV PYTHONUNBUFFERED 1
# Install R 3.6
RUN echo 'deb http://cran.rstudio.com/bin/linux/debian buster-cran35/' >> /etc/apt/sources.list
RUN apt install dirmngr
RUN apt-key adv --keyserver keys.gnupg.net --recv-key 'E19F5F87128899B192B1A2C2AD5F960A256A04AF'
RUN apt update
RUN apt install -y r-base
# Install R dependencies
RUN R -e "install.packages('BiocManager', dependencies=TRUE, repos='http://cran.rstudio.com/')"
它不会抛出任何错误。但是当我运行docker container exec -it <my container> bash 并执行以下操作时:
Rscript -e 'installed.packages()' | grep BiocManager
没有任何结果。我不知道这是否适用,但在构建过程中会抛出:
下载的源码包在
'/tmp/Rtmp7jBLWQ/downloaded_packages'
也许它正在将软件包安装在临时文件夹中是问题所在。有没有什么方法可以安装 R 包而不需要基于R-base 图像并使用install2.r?
【问题讨论】:
-
我不知道,但您可能需要使用
.libPaths()检查新软件包的安装位置。 (您可以在install.packages(..., lib="/some/path")中设置它。)要知道 R 将查找的位置,您可能需要先运行docker container exec -it name Rscript -e '.libPaths()'。 -
我喜欢使用
littler包在 Docker 镜像上安装 R 包,因此它会抛出一个错误,停止构建过程中的该步骤,而不是绕过它。 dirk.eddelbuettel.com/code/littler.html -
感谢大家!我试一试告诉你
标签: python r docker dockerfile