ドッキングしたいレガシーWebアプリケーションは、Java SE7までサポートされていたcom/Sun/image/codec/jpeg/ImageFormatException
のようないくつかの古いクラスを使用します。これで、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ホームに設定するにはどうすればよいですか?
DockerfileでENV
コマンドを使用して、Dockerイメージの環境変数を簡単に設定/変更できます。
ENV Java_HOME /path/to/Java
ベースイメージにデフォルトでOpenJDKが含まれており、イメージでOracleJDKを使用する場合は、次のコマンドを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