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?
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
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