Как мне установить пакеты R Github внутри Docker - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь создать изображение Docker для своего R-скрипта, чтобы запланировать работу R в Google Cloud. В настоящее время я тестирую его с небольшим R Script. Команды docker build не выполняются на этапе установки пакета GitHub rga. Ниже мой R-скрипт и DockerFile:

R-скрипт:

library(rga)
library(bigrquery)
bq_token()
rga.open(instance = "ga", where="~/ga.rga")

demoScheduleAPI <- function(){
  search_perf <- ga$getData(XXXX, batch = TRUE, walk = TRUE, 
                          start.date = "2020-01-15",
                          end.date = "2020-01-16",
                          metrics = "ga:searchUniques",
                          dimensions="ga:date,ga:hour,ga:searchKeyword, ga:searchCategory ,ga:dimension6,ga:dimension10")
  project <- "bidone-data"
  insert_upload_job(project, "GA_Export_Prod_DataSet", "Test_Table123", search_perf)
}

Dockerfile

FROM rocker/r-ver:3.6.1

RUN mkdir /home/bidone

RUN R -e "install.packages('bigrquery', repos='http://cran.rstudio.com/')"

RUN R -e "install.packages('devtools', repos='http://cloud.r-project.org')"

RUN R -e "devtools::install_github('skardhamar/rga')"

COPY .secrets /home/analysis/.secrets

COPY ga /home/analysis/ga

COPY DockerTest.R /home/analysis/DOckerTest.R

CMD R -e "source('/home/analysis/DockerTest.R')"

Он устанавливает пакет devtools, однако при попытке установить rga пакет от github, выдает следующую ошибку.

> devtools::install_github('skardhamar/rga')
Error in loadNamespace(name) : there is no package called ‘devtools’
Calls: :: ... loadNamespace -> withRestarts -> withOneRestart -> doWithOneRestart
Execution halted
The command '/bin/sh -c R -e "devtools::install_github('skardhamar/rga')"' returned a non-zero code: 1

Как я могу исправить эту проблему?

1 Ответ

0 голосов
/ 20 марта 2020

Лучшая ставка для этих вещей - поиск в GitHub. Вот один мой пример контейнера, который используется для поддержки класса , который я преподаю , основываясь на другом Dockerfile из нашего проекта Rocker . Ссылка дает вам полную информацию, но здесь для краткости опущены биты:

FROM rocker/r-ubuntu:18.04   

# Install required libraries -- using prebuild binaries where available
RUN apt-get update && apt-get install -y \
    git \
    r-cran-data.table \
    r-cran-devtools \
    r-cran-doparallel \
    r-cran-dygraphs \
    r-cran-foreach \
    r-cran-fs \
    r-cran-future.apply \
    r-cran-gh \
    r-cran-git2r \
    r-cran-igraph \
    r-cran-memoise \
    r-cran-microbenchmark \
    r-cran-png \
    r-cran-rcpparmadillo \
    r-cran-rex \
    r-cran-rsqlite \
    r-cran-runit \
    r-cran-shiny \
    r-cran-stringdist \
    r-cran-testthat \
    r-cran-tidyverse \
    r-cran-tinytest \
    r-cran-xts \
    sqlite3 \
    sudo

# Install additional R packages from CRAN (on top of the ones 
# pre-built as r-cran-*)
RUN install.r bench diffobj flexdashboard lintr ttdo unix

# Install plr -- for now (?) from GH; also install visualTest
RUN installGithub.r stat430dspm/plr MangoTheCat/visualTest

Это в значительной степени охватывает это, поскольку мы

  • используем PPA Майкла Раттера, чтобы получить как Насколько мы можем для Ubuntu LTS (в настоящее время все еще 18.04) через предварительно собранные пакеты .deb для Ubuntu
  • , используйте скрипт littler install.r для установки некоторых пакетов из CRAN
  • используйте другой littler script installGithub.r для установки еще двух репозиториев из GitHub

Это просто показывает мой предпочтительный порядок ранжирования: двоичные файлы по CRAN по сравнению с GitHub. Ключевым моментом для вашего вопроса является то, что эти скрипты littler также находятся в стеке R-ver для Rocker. Но с r-ver вам нужно очень осторожно по поводу смешивания, так как дата выпуска фиксируется с помощью MRAN для дизайна .

(И в случае, если кто-то захочет узнать больше о почему из этого контейнера, мы просто добавляем препринт на arXiv - - но это довольно специфично c для инфраструктуры тестирования и классификации, которую мы используем.

...