无法在Docker镜像中安装R软件包

这似乎是因为法律上的原因,Java不能在Docker镜像中单独安装,而是必须使用Java镜像。

我正在使用一个Java图像,与R安装,因为我需要它,但是当我安装一个R包,我得到一个错误

下面是我的Dockerfile:

FROM buildpack-deps:jessie-scm # A few problems with compiling Java from source: # 1. Oracle. Licensing prevents us from redistributing the official JDK. # 2. Compiling OpenJDK also requires the JDK to be installed, and it gets # really hairy. RUN apt-get update && apt-get install -y --no-install-recommends \ bzip2 \ unzip \ xz-utils \ && rm -rf /var/lib/apt/lists/* # Default to UTF-8 file.encoding ENV LANG C.UTF-8 # add a simple script that can auto-detect the appropriate JAVA_HOME value # based on whether the JDK or only the JRE is installed RUN { \ echo '#!/bin/sh'; \ echo 'set -e'; \ echo; \ echo 'dirname "$(dirname "$(readlink -f "$(which javac || which java)")")"'; \ } > /usr/local/bin/docker-java-home \ && chmod +x /usr/local/bin/docker-java-home ENV JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64 ENV JAVA_VERSION 7u111 ENV JAVA_DEBIAN_VERSION 7u111-2.6.7-2~deb8u1 RUN set -x \ && apt-get update \ && apt-get install -y \ openjdk-7-jdk="$JAVA_DEBIAN_VERSION" \ && rm -rf /var/lib/apt/lists/* \ && [ "$JAVA_HOME" = "$(docker-java-home)" ] # If you're reading this and have any feedback on how this image could be # improved, please open an issue or a pull request so we can discuss it! # system libraries of general use RUN apt-get update && apt-get install -y \ sudo \ pandoc \ pandoc-citeproc \ libcurl4-gnutls-dev \ libcairo2-dev \ libxt-dev \ libssl-dev \ libssh2-1-dev \ libssl1.0.0 # system library dependency for the euler app RUN apt-get update && apt-get install -y \ libmpfr-dev RUN sudo apt-get install -y \ r-base r-base-dev # basic shiny functionality RUN R -e "install.packages(c('shiny', 'rmarkdown'), repos='https://cloud.r-project.org/')" # install dependencies RUN R -e "install.packages('Rmpfr', repos='https://cloud.r-project.org/')" # Special Package RUN R -e "install.packages('shiny')" RUN R -e "install.packages('shinydashboard')" RUN R -e "install.packages('plyr')" RUN R -e "install.packages('dplyr')" RUN R -e "install.packages('ggplot2')" RUN R -e "install.packages('tm')" RUN R -e "install.packages('SnowballC')" RUN R -e "install.packages('wordcloud')" RUN R -e "install.packages('RWeka')" RUN R -e "install.packages('reshape2')" RUN R -e "install.packages('igraph')" # copy the app to the image RUN mkdir /root/testapp1 COPY testapp1 /root/testapp1 COPY Rprofile.site /usr/lib/R/etc/ EXPOSE 3838 CMD ["R", "-e shiny::runApp('/root/testapp1')"] 

当我尝试安装任何R软件包时,出现以下错误信息:

 > install.packages('shiny') Installing package into '/usr/local/lib/R/site-library' (as 'lib' is unspecified) Error in contrib.url(repos, type) : trying to use CRAN without setting a mirror Calls: install.packages -> grep -> contrib.url Execution halted The command '/bin/sh -c R -e "install.packages('shiny')"' returned a non-zero code: 1 

我怎样才能解决这个问题的头痛。

谢谢。

在R环境中执行install.packages('shiny') ,会挂起要求您从要下载的镜像中进行select。

 > install.packages('shiny') Installing package into '/Users/user/Library/R/3.3/library' (as 'lib' is unspecified) --- Please select a CRAN mirror for use in this session --- HTTPS CRAN mirror 1: 0-Cloud [https] 2: Algeria [https] ... 55: (HTTP mirrors) Selection: 

根据你的错误输出,似乎命令RUN R -e "install.packages(c('shiny', 'rmarkdown'), repos='https://cloud.r-project.org/')"

和下一个执行,然后尝试执行时失败(错误出口1):

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

提供相反的install.packages('shiny', repos='https://cloud.r-project.org/')可能会在不询问任何内容的情况下进行静默安装。

看起来像你得到的错误是从没有指定repos参数的install.pacakges方法。

一旦我用你的dockerfile在本地机器上用repos='http://cran.us.r-project.org/'更新了install.packages ,图像就成功了。