Pra*_*oor 5 java-home docker dockerfile
我的 docker 容器需要设置 JAVA_HOME。我已将其添加到 Dockerfile 中,如下所示
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/jre
Run Code Online (Sandbox Code Playgroud)
但是,这是值的硬编码。有没有办法可以从图像本身动态获取这个值
Jin*_*alu 12
官方镜像默认的Docker文件为Dockerfile
如果你还想要自己的Java home设置镜像。将此行添加到您的Dockerfile
RUN apt-get update && \
apt-get install -y openjdk-8-jdk && \
apt-get install -y ant && \
apt-get clean && \
rm -rf /var/lib/apt/lists/ && \
rm -rf /var/cache/oracle-jdk8-installer;
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
RUN export JAVA_HOME
Run Code Online (Sandbox Code Playgroud)
创建docker-compose.yml,用容器替换动态路径,更新环境变量environment:
可以在 Dockerfile 指令JAVA_HOME中添加ENV。但是如果 Java 包更新了,您必须更改ENV JAVA_HOMEDockerfile 中的 。
JAVA_HOME但我找到了一种无需更新 Dockerfile 即可自动设置的方法。
RUN export JAVA_HOME="$(dirname $(dirname $(readlink -f $(which java))))"
Run Code Online (Sandbox Code Playgroud)
警告:只有当您使用“&&”操作数在同一个RUN单行命令中运行所有命令时,此命令才有效,如 Mig82 在注释部分中所述。
我希望这可以帮助你。
从Dockerfile 构建的镜像永远是静态的。除非重建,否则它的 Java 位置永远不会改变。
然而,当镜像作为容器启动时,任何事情都可能发生。如果有任何脚本会在运行时编辑 Java 位置,那么该脚本也可能是JAVA_HOME应该更新的地方。
如果您的意思是您想要使用具有不同 java 位置的任意基础映像动态构建映像,那么这可能应该由构建脚本来处理。
| 归档时间: |
|
| 查看次数: |
10967 次 |
| 最近记录: |