-1
我想基於標準多克爾圖像tomcat:9
也可以使用Java中的Maven編譯上建立一個碼頭工人形象:配置JDK基於Tomcat的內部Dockerfile運行Maven:9
當我第一次docker run
tomcat: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
當我然後docker build
與此Dockerfile
FROM tomcat:9
RUN apt-get update
RUN apt-get install -y openjdk-7-jdk maven
派生泊塢圖像在同Dockerfile(並在我的
pom.xml
存在我的目錄)
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)
但是,如果我再RUN mvn package
, 我收到此錯誤信息:
和docker run
但我得到這些結果
No compiler is provided in this environment.
Perhaps you are running on a JRE rather than a JDK?
我該如何讓Maven知道在這個環境中安裝的JDK(而不是JRE)?
是export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
(即改變手動JAVA_HOME
)的正確的路要走或是否有更好的方法,例如在系統完整性方面?
由於什麼原因您需要Java 7提供的Java 8無法完成的工作? –
@ cricket_007我需要一個JDK(w /'javac')而不是JRE(w/o'javac')。該版本只是次要的。 JDK 8也可以。 – Drux
我明白了。我認爲標準方法是獨立於容器編譯應用程序,然後將卷鏈接到服務器的WebRoot –