Установленные R-пакеты в Dockerfile не будут найдены при запуске контейнера - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь установить несколько пакетов R в образе Python Docker. У меня есть этот маленький 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 / download_packages'

Может быть, проблема в том, что он устанавливает пакеты во временную папку. Есть ли способ установить пакеты R без создания базы образа на R-base образе и использовать install2.r?

1 Ответ

1 голос
/ 20 февраля 2020

Какой позор ... У меня был docker -композит с предложением build: ., и я забыл запустить docker-compose build. Вот почему изменения не применяются.

Однако я использовал r-base образ , чтобы упростить установку зависимостей. Мой окончательный Dockerfile это:

FROM r-base:3.6.2

# Install R dependencies
RUN install2.r --error BiocManager

# Install Python 3.7
RUN apt install -y python3.7 python3-pip
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...