使用 ubuntu 映像在 dockerfile 中安装 JDK 8 更新 172



我习惯于在我的docker文件中下载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

请注意,我的基本码头工人映像是:ubuntu:16.04

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

我认为oracle已经修复了broken web8upd

所以现在在 github 上指定的 dockerfile 工作得很好!

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

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

请检查下面的代码,只需复制并粘贴到 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
<</div> div class="one_answers">

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

文件名 : 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

最新更新