首页 > 解决方案 > 如何使用 R & Java 构建 Dockerfile

问题描述

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

# 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?

我已经尝试根据我发现的另一篇文章将以下内容添加到我的 dockerfile 但是我收到错误消息“存储库” http://ppa.launchpad.net/webupd8team/java/ubuntu焦点版本没有发布文件:

# 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 新手,对此的任何帮助将不胜感激。

标签: rdockerdockerfilerjava

解决方案


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

所以一个工作的 dockerfile 安装rJava

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


推荐阅读