Как запретить пакетам устанавливать пакеты в системной библиотеке внутри докера? - PullRequest
0 голосов
/ 25 апреля 2019

У меня блестящий проект с использованием packrat.Когда я создаю контейнер Docker Rocker-Shiny, я помещаю команды в Dockerfile, чтобы установить пакет packrat и восстановить библиотеку.Однако я вижу, что packrat устанавливает пакеты в системную библиотеку (/ usr / local / lib / R / ...), а не в частную библиотеку проекта.Если я вхожу в консоль bash-докера и запускаю сеанс R в dir проекта, то читает файл .Rprofile, и пакет packrat установлен и начинает установку пакетов в личную библиотеку.Как я могу получить это из Dockerfile?

В моем Dockerfile:

RUN cd /srv/shiny-server && \ R -e 'install.packages("packrat" , repos="http://cran.us.r-project.org"); packrat::restore()'

Установить пакеты в / usr / local / lib / R ... что не так.

Однако, если я вхожу в Docker Bash и запускаю сеанс R в директории моего проекта, он работает нормально:

docker exec -it test_app bash
cd /srv/shiny-server
R # start R session into project dir
Packrat is not installed in the local library -- attempting to bootstrap an installation...
> Installing packrat into project private library:
- "/srv/shiny-server/packrat/lib/x86_64-pc-linux-gnu/3.5.3"
* installing *source* package ‘packrat’ ...
** R
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (packrat)
> Attaching packrat
> Restoring library
Installing plyr (1.8.1) ... OK (built source)

1 Ответ

0 голосов
/ 18 июля 2019

Я столкнулся с той же проблемой и исправил ее, восстановив пакеты packrat в моем файле docker-compose:

докер-compose.yml:

...
command: [sh,-c, "sudo Rscript config/packrat_restore.R"]
...

packrat_restore.R:

packrat::init(
  infer.dependencies = FALSE,
  enter = TRUE,
  restart = FALSE)
packrat::restore()

Поскольку этот обходной путь всегда будет задерживать запуск моих контейнеров в производстве, я все равно попытаюсь исправить проблему в самом Dockerfile ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...