我习惯于在我的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