web-dev-qa-db-ja.com

dockerファイルを使用してRパッケージをインストールする

ドッカーファイルに以下の行を使用してRをインストールしました。 dockerファイルにインストールするパッケージを指定する方法を提案してください。

RUN yum -y install R-core R-devel

私はこのようなことをしています:

RUN R -e "install.packages('methods',dependencies=TRUE, repos='http://cran.rstudio.com/')"\
    && R -e "install.packages('jsonlite',dependencies=TRUE, repos='http://cran.rstudio.com/')" \
    && R -e "install.packages('tseries',dependencies=TRUE, repos='http://cran.rstudio.com/')" 

これは正しい方法ですか?

14
Ashag

@Cameron Kerrのコメントで示唆されているように、Rscriptはビルドに失敗しません。現在のところ、質問が示唆するとおりに行うことをお勧めします。

_RUN R -e "install.packages('methods',dependencies=TRUE, repos='http://cran.rstudio.com/')"
RUN R -e "install.packages('jsonlite',dependencies=TRUE, repos='http://cran.rstudio.com/')"
RUN R -e "install.packages('tseries',dependencies=TRUE, repos='http://cran.rstudio.com/')" 
_

パッケージの障害がないと確信している場合は、このワンライナーを使用してください-

_RUN R -e "install.packages(c('methods', 'jsonlite', 'tseries'),
                           dependencies=TRUE, 
                           repos='http://cran.rstudio.com/')"
_

EDIT:Base-Rイメージを使用しない場合は、_rocker-org_の_r-ver_または_r-studio_またはtidyverseイメージ。 repo です。 Dockerfileの例を次に示します-

_FROM rocker/tidyverse:latest

# Install R packages
RUN install2.r --error \
    methods \
    jsonlite \
    tseries
_

_--error_フラグはオプションです。パッケージのインストールが失敗すると、install.packages()がエラーをスローします(これにより_docker build_コマンドが失敗します)。デフォルトでは、install.packages()は警告のみをスローします。これは、パッケージのインストールに失敗した場合でも、Dockerfileが正常にビルドできることを意味します。

すべての_rocker-org_は基本的に インストール _install2.R_機能用のlittlerパッケージ

8
Ic3fr0g

はい、ソリューションは機能するはずです。私は同じ問題に遭遇し、ここで解決策を見つけました https://github.com/glamp/r-docker/blob/master/Dockerfile

つまり、RUN Rscript -e "install.packages('PACKAGENAME')"を使用します。私はそれを試してみましたが、動作します。

6
elevendollar

目的のインストールコマンドを使用してRスクリプトを作成し、Dockerを使用して実行できます。このドキュメントを正しく読んでいる場合は( https://hub.docker.com/_/r-base/ =)。

FROM r-base
COPY . /usr/local/src/myscripts
WORKDIR /usr/local/src/myscripts
CMD ["Rscript", "myscript.R"]

Build your image with the command:

$ docker build -t myscript /path/to/Dockerfile

どこ myscript.Rには、適切なパッケージインストールコマンドが含まれています。

0
Damian