配置JDK以基于tomcat在Dockerfile中运行Maven:9

时间:2016-08-21 07:49:05

标签: java maven docker openjdk

我正在尝试基于标准的Docker镜像tomcat:9构建一个Docker镜像,它也可以使用Maven编译Java:

当我第一次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

导出的Docker镜像时
FROM tomcat:9
RUN apt-get update
RUN apt-get install -y openjdk-7-jdk maven

docker run我得到了这些结果:

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)

但是,如果我在同一个Dockerfile中RUN mvn package(以及我pom.xml存在的I目录中), 我收到此错误消息:

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)正确的方式还是有更好的方法,例如在系统完整性方面?

1 个答案:

答案 0 :(得分:1)

默认情况下,tomcat:9 Docker镜像附带JRE 8.因此,您只需要安装 JDK 8 即可使用javac。

apt-get install openjdk-8-jdk maven

相关问题