【问题标题】:Change JAVA_HOME in docker在 docker 中更改 JAVA_HOME
【发布时间】:2018-02-26 21:25:26
【问题描述】:

我想要 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)

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)

但是,echo $JAVA_HOME 在进入容器后给出了/docker-java-home/jre,它再次指向 OpenJdk。如何将 JAVA_HOME 设置为我安装的 Oracle Jdk 主目录?

【问题讨论】:

    标签: java docker docker-compose


    【解决方案1】:

    您可以使用 Dockerfile 中的ENV 命令简单地设置/更改 Docker 映像的环境变量:

    ENV JAVA_HOME /path/to/java
    

    【讨论】:

      【解决方案2】:

      如果您的基础镜像默认包含 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
      

      【讨论】:

        猜你喜欢
        • 2019-10-13
        • 1970-01-01
        • 2011-02-08
        • 1970-01-01
        • 2010-10-09
        • 2018-09-27
        • 2011-05-19
        • 2022-06-14
        • 1970-01-01
        相关资源
        最近更新 更多