2016-08-21 12 views
-1

私もMavenを使用してJavaをコンパイルすることができ、標準ドッカーイメージtomcat:9に基づいて、ドッカーイメージを構築しようとしています:設定JDK:9

私が最初docker runtomcat:9私はこれらを取得すると結果:

java -version      # openjdk version "1.8.0_102" 
javac -version      # javac: command not found 
echo $JAVA_HOME      # /usr/lib/jvm/java-8-openjdk-amd64/jre 
dpkg --get-selections | grep \\-jre # openjdk-8-jre-headless:amd64 
dpkg --get-selections | grep \\-jdk # (none) 
update-alternatives --config java 
# There is only one alternative in link group java (providing /usr/bin/java) 
update-alternatives --config javac # error: no alternatives for javac 

ときIその後、docker buildこのDockerfile

FROM tomcat:9 
RUN apt-get update 
RUN apt-get install -y openjdk-7-jdk maven 
と派生ドッカーの画像

docker runそれは私がこれらの結果を得る:

No compiler is provided in this environment. 
Perhaps you are running on a JRE rather than a JDK? 
:I(と私の pom.xmlが存在するIディレクトリにある)同じDockerfileで、その後 RUN mvn package、 私は、このエラーメッセージを取得する場合、しかし、

java -version      # java version "1.7.0_111" 
javac -version      # javac 1.7.0_111 
echo $JAVA_HOME      # /usr/lib/jvm/java-8-openjdk-amd64/jre 
dpkg --get-selections | grep \\-jre # default-jre, default-jre-headless, openjdk-7-jre:amd64, openjdk-7-jre-headless:amd64, openjdk-8-jre-headless:amd64 
dpkg --get-selections | grep \\-jdk # penjdk-7-jdk:amd64 
update-alternatives --config java # (3 alternatives 
# /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java, 
# /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java, 
# /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java, 
# with the 1st one selected) 
update-alternatives --config javac 
# There is only one alternative in link group java (providing /usr/bin/javac) 

この環境でMavenに(JREではなく)インストールされているJDKを認識させるにはどうすればよいですか?

(つまり、手作業でJAVA_HOMEを変更する)正しい方法を選択するか、より良い方法があります。システムの完全性の点では?

+1

Java 7が必要な理由は何ですか? –

+0

@ cricket_007 JRE(javac'なし)の代わりにJDK(w/'javac')が必要です。バージョンは二次的に重要です。 JDK 8でも問題ありません。 – Drux

+0

私は参照してください。私は、コンテナとは独立してアプリケーションをコンパイルし、サーバーのWebRootにボリュームをリンクするという標準的なアプローチをとっていると思います。 –

答えて

1

デフォルトでは、Tomcat:9 DockerイメージにはJRE 8が付属しています。したがって、javacを使用するには、JDK 8をインストールする必要があります。

apt-get install openjdk-8-jdk maven

関連する問題