如何使用 R & Java 构建 Dockerfile

How to build Dockerfile with R & Java

我正在尝试构建一个 Docker 容器,该容器使用包 RJava 运行 R。我试过以下代码:

# Install R version 3.6.3
FROM rocker/tidyverse:3.6.3

# Make ~/.R
RUN mkdir -p $HOME/.R

# Install Ubuntu packages && then R packages
RUN install2.r --error \
         lubridate magrittr RPostgres DBI broom rlang rJava

但是我得到以下信息:包“rJava”的安装具有非零退出状态。

谁能帮我解决这个问题。我在想,也许是因为 Java 没有安装。有谁知道如何在这个 docker 容器上安装 Java?

我尝试按照另一个 post 将以下内容添加到我的 docker 文件中,但我发现我收到错误提示 'The repository 'http://ppa.launchpad.net/webupd8team/java/ubuntu focal Release' does没有发布文件:

# Install "software-properties-common" (for the "add-apt-repository")
RUN apt-get update && apt-get install -y \
    software-properties-common

# Add the "JAVA" ppa
RUN add-apt-repository -y \
    ppa:webupd8team/java

# Install OpenJDK-8
RUN apt-get update && \
    apt-get install -y openjdk-8-jdk && \
    apt-get install -y ant && \
    apt-get clean;

# Fix certificate issues
RUN apt-get update && \
    apt-get install ca-certificates-java && \
    apt-get clean && \
    update-ca-certificates -f;

# Setup JAVA_HOME -- useful for docker commandline
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
RUN export JAVA_HOME

我是 docker 的新手,如有任何帮助,我们将不胜感激。

rocker 图片基于 debian,而非 ubuntu。具体是Debian GNU/Linux 10 (buster)。使用该版本,您可以通过 apt 安装软件包 openjdk-11-jdk 来安装 java,并且不需要为 openjdk-8-jdk.

添加任何存储库

所以一个安装 rJava:

的工作 dockerfile
FROM rocker/tidyverse:3.6.3

RUN apt-get update && \
    apt-get install -y openjdk-11-jdk && \
    apt-get install -y liblzma-dev && \
    apt-get install -y libbz2-dev

RUN Rscript -e "install.packages('rJava')"

注意:liblzma-devlibbz2-dev 是编译 rJava.

的附加系统依赖项