【问题标题】:Install JDK 8 update 172 in dockerfile with ubuntu image使用 ubuntu 映像在 dockerfile 中安装 JDK 8 update 172
【发布时间】:2018-09-29 13:45:35
【问题描述】:

我习惯于像这样在我的 dockerfile 中下载 java:

# Install Java
ENV JAVA_VERSION_MAJOR 8
ENV JAVA_VERSION_MINOR 162
ENV JAVA_VERSION_BUILD 12
ENV JAVA_DOWNLOAD_HASH 0da788060d494f5095bf8624735fa2f1
RUN mkdir -p /usr/lib/jvm \
    && cd /usr/lib/jvm \
    && wget -nv --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-b${JAVA_VERSION_BUILD}/${JAVA_DOWNLOAD_HASH}/jdk-${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-linux-x64.tar.gz \
    && tar xf jdk-${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-linux-x64.tar.gz \
    && rm jdk-${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-linux-x64.tar.gz \
    && update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.${JAVA_VERSION_MAJOR}.0_${JAVA_VERSION_MINOR}/bin/java" 1
ENV JAVA_HOME /usr/lib/jvm/jdk1.${JAVA_VERSION_MAJOR}.0_${JAVA_VERSION_MINOR}

显然,oracle 已经发布了新的更新 8u172,并且在 dockerfile 中下载失败并显示 ERROR 404: Not Found.

我的问题是,我如何找出JAVA_DOWNLOAD_HASH 变量?

其余的变量值对我来说很清楚:

JAVA_VERSION_MAJOR 8
JAVA_VERSION_MINOR 172
JAVA_VERSION_BUILD 11

请注意,我的基础 docker 镜像是:ubuntu:16.04

我在 ubuntu 中安装 java 的灵感来自 here

【问题讨论】:

标签: java docker java-8 dockerfile ubuntu-16.04


【解决方案1】:

上述解决方案对我不起作用,但有助于入门。这是为我工作的那个

文件名:ubuntu_oraclejdk8

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

## Install Oracle's JDK
# add oracle jdk repository
RUN add-apt-repository ppa:ts.sch.gr/ppa \
# accept oracle license
  && echo debconf shared/accepted-oracle-license-v1-1 select true | debconf-set-selections \
  && echo debconf shared/accepted-oracle-license-v1-1 seen true | debconf-set-selections \
  && apt-get update \
# install oracle jdk 8 and make it default
  && apt-get -y install oracle-java8-installer \
  && apt-get -y install oracle-java8-set-default \
# clean up
  && apt-get clean all \
  && rm -rf /var/lib/apt/lists/*
CMD ["bash"]

使其工作的 Docker 步骤

$ docker build -t ubuntu_oraclejdk8 - < ubuntu_oraclejdk8
$ docker run -it ubuntu_oraclejdk8

【讨论】:

    【解决方案2】:

    请检查以下代码,只需复制并粘贴到 dockerfile 安装java

    FROM ubuntu:18.04
    
    
     
    # 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 \
        rm -rf /var/lib/apt/lists/* && \
        rm -rf /var/cache/oracle-jdk8-installer
    
    # Setup JAVA_HOME -- useful for docker commandline
    ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
    RUN export JAVA_HOME
    

    【讨论】:

    • Rawan,请注意作者想要 oracle-jdk 而不是 openjdk,这个答案是正确的但无关紧要
    【解决方案3】:

    我认为 oracle 已经修复了broken web8upd

    所以现在指定的 dockerfile on github 可以完美运行!

    只需复制粘贴相同的 dockerfile 并进行一些修改:

    FROM ubuntu:16.04
    
    # To solve add-apt-repository : command not found
    RUN apt-get -y install software-properties-common
    
    # Install Java
    RUN \
      echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
      add-apt-repository -y ppa:webupd8team/java && \
      apt-get update && \
      apt-get install -y oracle-java8-installer --allow-unauthenticated && \
      rm -rf /var/lib/apt/lists/* && \
      rm -rf /var/cache/oracle-jdk8-installer
    
    
    # Define commonly used JAVA_HOME variable
    ENV JAVA_HOME /usr/lib/jvm/java-8-oracle
    

    请注意:rm -rf /var/lib/apt/lists/* 将删除由apt-get update 获取的所有列表。

    所以如果你想在安装Java后安装更多的东西,删除rm -rf /var/lib/apt/lists/*否则你必须再次运行apt-get update

    【讨论】:

    • 这个答案现在也导致超时情况:=> [4/9] RUN echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | de 105.2s => => # gpg: keyring /tmp/tmp9okttpj8/secring.gpg' created =&gt; =&gt; # gpg: keyring /tmp/tmp9okttpj8/pubring.gpg' created => => # gpg: requesting key EEA14886 from hkp server keyserver.ubuntu.com => => # Error: retrieving gpg 密钥超时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    相关资源
    最近更新 更多