如何在Dockerfile中设置JVM参数

7

我有一个 Dockerfile,如下所示:

FROM tomcat:9.0.12-jre8
EXPOSE 8080
COPY app.war "$CATALINA_HOME"/webapps

我需要设置一些JVM属性,如下所示:
-DTOMCAT=Y
-Doracle.server=1234
-Doracle.url=1234
-Doracle.password=1234
...

我如何在Dockerfile中添加这些属性?
2个回答

11

您可以在构建Dockerfile时,简单地将JAVA_OPTS的值设置为您需要的值:

ENV JAVA_OPTS="-DTOMCAT=Y -DOracle.server=1234 [...]"

如果你不修改官方tomcat镜像中的CMD,你也可以在运行时直接设置它:

$ docker run -e JAVA_OPTS="-DTOMCAT=Y -DOracle.server=1234 [...]" your_image:your_tag 

参见:https://github.com/docker-library/tomcat/issues/8

根据你提供的选项,在安全性方面,选择第二个版本会更好(主机、端口和密码信息不应该留在 Docker 镜像中)。

如果您的应用程序只需要最少的资源要求,则可以将其放在 Dockerfile 中。


4
您展示的用例似乎更像是环境变量。您可以让应用程序从环境变量中读取这些值,并在运行时设置它们。 $ docker run --env MYVAR2=foo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接