web-dev-qa-db-fra.com

Changer Java_HOME dans le docker

L'application Web héritée que je souhaite ancrer dans le Dock utilise certaines anciennes classes comme com/Sun/image/codec/jpeg/ImageFormatException qui étaient pris en charge jusqu'à Java SE7. Maintenant, dans le conteneur docker, jdk par défaut est (lors de l'installation du conteneur Tomcat-6) est

Java version "1.7.0_131"
OpenJDK Runtime Environment (IcedTea 2.6.9) (7u131-2.6.9-2~deb8u1)

OpenJdk ne prend pas en charge ces classes

J'ai utilisé update-alternatives pour installer Oracle Jdk7.80

Après avoir chargé le conteneur, en donnant Java -version Je reçois

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)

Pourtant, echo $Java_HOME après être entré dans le conteneur donne /docker-Java-home/jre qui pointe à nouveau vers OpenJdk. Comment puis-je définir Java_HOME à la maison Oracle Jdk que j'ai installée?

9
Shoreki

Vous pouvez simplement définir/modifier les variables d'environnement de votre image Docker en utilisant la commande ENV dans votre Dockerfile:

ENV Java_HOME /path/to/Java
14
dpr

Si votre image de base contient par défaut OpenJDK et si vous souhaitez utiliser OracleJDK dans votre image, ajoutez simplement la commande ci-dessous à votre dockerfile

RUN yum -y remove Java***
RUN echo "Java_HOME=$(readlink -f /usr/bin/Java | sed "s:bin/Java::")" | tee -a /etc/profile && source /etc/profile && echo $Java_HOME
2