Пользовательский пакет R Source в Docker - PullRequest
0 голосов
/ 04 июня 2019

InfrastructureR_0.1.4.tar.gz - это исходный пакет R, который я создал с помощью RStudio в Windows, и он отлично работает.Но когда я пытаюсь использовать его в файле Docker, команда InfrastructureR_0.1.4.tar.gz находится в том же месте, что и файл Docker

Docker работает на компьютере с Ubuntu 18.x

RUN R -e "install.packages ('InfrastructureR_0.1.4.tar.gz', зависимости = FALSE, verbose = TRUE, repos = NULL, type = 'source')" не устанавливается.

Я запускаю сборку docker командой sudo docker build -t myRApp s.и я получаю следующее сообщение об ошибке

Установка пакета в систему / usr / local / lib / R / site-library (так как lib не указана) (cmd0): / usr / lib / R /bin / R CMD INSTALL Предупреждение: недопустимый пакет 'InfrastructureR_0.1.4.tar.gz' Ошибка: ОШИБКА: пакеты не указаны. Предупреждение: в install.packages ("InfrastructureR_0.1.4.tar.gz", зависимость = ЛОЖЬ,: установкапакет 'InfrastructureR_0.1.4.tar.gz' имел ненулевой статус выхода

Так как мне установить пользовательский исходный пакет R в Docker

Ответы [ 2 ]

3 голосов
/ 04 июня 2019

Недостаточно иметь файл tar.gz в том же каталоге, что и ваш файл Dockerfile. Чтобы сделать локальный файл доступным для контейнера Docker, созданного из образа, вы можете использовать инструкцию COPY.

Инструкция COPY копирует новые файлы или каталоги из <src> и добавляет их в файловую систему контейнера по пути <dest>:

COPY [--chown=<user>:<group>] <src>... <dest> 

Больше в документации докера:

1 голос
/ 04 июня 2019

Я думаю, что пакет должен быть скопирован внутри контейнера, чтобы контейнер мог получить к нему доступ. (или в томе местоположения, к которому имеет доступ Docker)

R, работающий внутри контейнера, не может найти файл.

https://www.digitalocean.com/community/tutorials/how-to-share-data-between-the-docker-container-and-the-host

https://docs.docker.com/storage/bind-mounts/

...