Не удается установить пакеты из исходного кода - Dockerfile - PullRequest
1 голос
/ 30 мая 2019

Я пытаюсь установить некоторые пакеты из исходного кода (включая созданный мной пакет, который прекрасно установлен с консолью R или даже при установке R CMD.

Однако при сборке docker-образа используется файл docker. Я получаю эту ошибку для этой строки в файле Docker

RUN R -e 'install.packages("RcppDIUtilsPackage_1.0.tar.gz",repos=NULL,type="source")'

Я также пробовал много других команд, включая R CMD INSTALL, все отлично работает для установки пакета, кроме сборки образа докера.

Вот ошибка, с которой я сталкиваюсь.

Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
Warning: invalid package ‘RcppDIUtilsPackage_1.0.tar.gz’
Error: ERROR: no packages specified
Warning message:
In install.packages("RcppDIUtilsPackage_1.0.tar.gz", repos = NULL,  :
  installation of package ‘RcppDIUtilsPackage_1.0.tar.gz’ had non-zero exit status

Спасибо !!

Редактировать: Dockerfile

FROM rocker/r-ver:3.4.4

WORKDIR /home/ubuntu/projects/DService

RUN apt-get update -qq && apt-get install -y \
  libssl-dev \
  libcurl4-gnutls-dev

RUN R -e "install.packages('plumber')"

RUN R -e "install.packages('Rcpp')"

RUN R -e 'install.packages("RcppDIUtilsPackage_1.0.tar.gz",repos=NULL,type="source")'

COPY / /

EXPOSE 8000

CMD ["Rscript", "DService.R"]

command: sudo docker build --no-cache -t dservice-docker-image .

1 Ответ

0 голосов
/ 31 мая 2019

Это косвенное решение вашей проблемы, потому что я не смог решить ту же проблему.

Корень проблемы может быть связан с хост-средой, которая создала образ Docker из файла Dockerfile.В частности, экземпляр R, который запускается для установки локальных пакетов, возможно, не сможет получить доступ к пути, по которому хранятся ваши локальные пакеты.

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

RUN R -e "devtools::install_github('dmanuge/shinyFilesWidget') ; system('echo 14')"

После этого перестройте образ Docker и запустите его соответствующим образом.Хотя это не является прямым решением, я достиг критического порога отладки, и мне нужно было двигаться дальше.:)

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