dynamic设置docker容器的JAVA_HOME

我的docker容器需要设置JAVA_HOME。 我已经将它添加到Dockerfile如下

ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/jre 

但是,这是价值的硬编码。 有没有一种方法可以从图像本身dynamic获取这个值

从Dockerfile构build的图像永远是静态的。 它的Java位置永远不会改变,除非重build。

当图像作为容器启动时,任何事情都可能发生。 如果有任何脚本会在运行时编辑Java位置,那么这个脚本也可能是JAVA_HOME应该更新的地方。

如果你的意思是你想要使用不同的java位置的任意基础图像来dynamic构build你的图像,那么这可能应该由构build脚本来处理。

也许你可以在CMD中做这样的事情:

 # rpm -qa | grep java-1.8 java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64 

接着

 #rpm -ql java-1.8.0-openjdk | sed -n '1p' | cut -d/ -f1-5 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64