在docker中更改JAVA_HOME

Sho*_*eki 9 java docker docker-compose

我想要dockerise的遗留Web应用程序使用一些旧的类com/sun/image/codec/jpeg/ImageFormatException,直到Java SE7才支持它们.现在在docker容器中默认的jdk获取(在安装tomcat-6容器时)是

java version "1.7.0_131"
OpenJDK Runtime Environment (IcedTea 2.6.9) (7u131-2.6.9-2~deb8u1)
Run Code Online (Sandbox Code Playgroud)

OpenJdk不支持这些类

我曾经update-alternatives安装过Oracle Jdk7.80

装载容器后,给java -version我收到

java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
Run Code Online (Sandbox Code Playgroud)

但是,echo $JAVA_HOME进入容器后再给/docker-java-home/jre它指向OpenJdk.如何设置JAVA_HOME我安装的Oracle Jdk主页?

dpr*_*dpr 14

您可以使用ENVDockerfile中的命令简单地设置/更改docker 镜像的环境变量:

ENV JAVA_HOME /path/to/java
Run Code Online (Sandbox Code Playgroud)


Das*_*kar 5

如果您的基础镜像默认包含 OpenJDK,并且如果您想在您的镜像中使用 OracleJDK,只需将以下命令添加到您的 dockerfile 并构建镜像并繁荣您的镜像将拥有 oracle JDK。

RUN yum -y remove java***
RUN yum install -y jdk-8u212-linux-x64.rpm && \
    echo "JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")" | tee 
    -a /etc/profile && source /etc/profile && echo $JAVA_HOME && \
    rm jdk-8u212-linux-x64.rpm && \ 
    alternatives --set java /usr/java/jdk1.8.0_212-amd64/jre/bin/java
Run Code Online (Sandbox Code Playgroud)