J'ai installé R en utilisant la ligne ci-dessous dans mon fichier docker. S'il vous plaît suggérer comment spécifier maintenant les paquets à installer dans mon fichier docker.
RUN yum -y install R-core R-devel
Je fais quelque chose comme ça:
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/')"
Est-ce la bonne façon de faire?
Oui, votre solution devrait fonctionner. J'ai rencontré le même problème et trouvé la solution ici https://github.com/glamp/r-docker/blob/master/Dockerfile .
En bref, utilisez: RUN Rscript -e "install.packages('PACKAGENAME')"
. Je l'ai essayé et ça marche.
Comme suggéré par le commentaire de @Cameron Kerr, Rscript ne vous donne pas un échec de construction… .. Pour l'instant, la méthode recommandée consiste à faire ce que la question suggère.
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/')"
Si vous êtes assez certain qu'il n'y a pas d'échec de paquet, utilisez ce one-liner -
RUN R -e "install.packages(c('methods', 'jsonlite', 'tseries'),
dependencies=TRUE,
repos='http://cran.rstudio.com/')"
EDIT: Si vous n'utilisez pas l'image Base-R, vous pouvez utiliser les images rocker-org
'r-ver
ou r-studio
ou tidyverse
. Voici le repo . Voici un exemple de fichier Docker -
FROM rocker/tidyverse:latest
# Install R packages
RUN install2.r --error \
methods \
jsonlite \
tseries
L'indicateur --error
est facultatif. Cela provoque install.packages()
en renvoyant une erreur en cas d'échec de l'installation du package (ce qui entraînera l'échec de la commande docker build
). Par défaut, install.packages()
émet uniquement un avertissement, ce qui signifie qu'un fichier Dockerfile peut être généré avec succès même s'il n'a pas réussi à installer le package.
Tous les rocker-org
's fondamentalement install le paquet littler
pour la fonctionnalité install2.R
Vous pouvez écrire un script R avec les commandes d'installation souhaitées, puis l'exécuter à l'aide de Docker - si je lis correctement cette documentation ( 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
Où myscript.R
contient les commandes d'installation de package appropriées.