java - Docker java将启动参数传递给jar

标签 java docker

这是我的 Dockerfile:

FROM java:8 
EXPOSE 8080
ADD target/Demo.jar demo.jar   
RUN sh -c 'touch /demo.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /demo.jar" ]

我的问题是如何像正常调用 .jar 文件一样传递一些启动参数。例如当我打电话时:

java -jar demo.jar param1 param2

然后我可以在我的应用程序中获取 param1,那么告诉我如何执行 Dockerfile 来传递 param ?

最佳答案

如果您必须传递参数 param1 和 param2,您可以直接在 Dockfile 中传递它们:

ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /demo.jar param1 param2" ]

或者如果您想从外部设置它们,您可以使用环境变量,例如:

ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /demo.jar $my_params" ]

然后使用-e选项运行它:

docker run -e my_params="param1 param2" ...

关于java - Docker java将启动参数传递给jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44483838/

相关文章:

Java:在输出文件中获取零

java - 即使我认为我已经退出循环,我的递归循环也会出现堆栈溢出错误

java - 在 Java 中存储对象集合的最佳方式?

asp.net - 在Docker容器中运行ASP.NET 4.6应用程序-站点始终为404s

php - Docker php :5. 6-Apache 开发环境缺少卷装载权限

docker - 由于未安装所需功能,无法启动虚拟机

docker - 使用 docker-py 获取正在运行的 docker 容器列表

java - IntelliJ IDE 无法正确检测 Scala 模板

java - HashMap 是正确的数据结构吗

docker - 拉取镜像失败