我想知道是否可以执行以下操作...
我在 java(和 gradle)中有一个小应用程序
我试图将它设置在一个容器中,所以我创建了 Dockerfile 并且工作正常,直到我必须设置一个参数。
为了在我的 IDLE 本地运行它,我设置了这些程序参数:
服务器应用-local.yml
这实际上加载了一个包含许多属性的文件,否则应用程序将失败。
在我的 Dockerfile 上我有这个
FROM openjdk:8-jdk-alpine
USER root:root
ENV NAME test
LABEL maintainer="myself"
WORKDIR /opt/apps
COPY build/libs/myapp.jar /opt/apps/myapp.jar
EXPOSE 8080
CMD ["java", "myapp.jar"]
我想知道我是否可以执行以下操作:
CMD ["java", "-server:application-local.yml", "myapp.jar"]
但是不行,我也做不到
java -jar myapp.jar -server:application-local.yml
什么都不做 不想做 gradleBuild 因为它应该只在我的 docker 图像上使用 java...
知道怎么做吗?
编辑:
所以,我完成了以下操作,将我的 application-local.yml 移动到一个我可以复制并添加的文件夹
COPY some-path/application-local.yml /opt/apps/local.yml
并为此移动了 CMD
CMD ["java", "myapp.jar", "server", "local.yml"]
我仍然遇到同样的错误,基本上无法解析该 yml 文件中的值。
编辑 2 ---
基本上我不能做的是弄清楚如何将 application.default.yml
作为配置文件发送,我也意识到 -server 没有任何作用, 是我的配置文件我无法加载的 并且不在 jar 中(正常行为)
最佳答案
当使用 java
命令时,参数的顺序很重要
首先你输入 java 选项,比如 -server
,然后是 -jar ...
或者在直接运行类的情况下是类名,然后是应用参数
运行应用程序的正确方法是:
CMD ["java", "-jar", "myapp.jar", "server", "application-local.yml"]
然后你有另一个问题,你只是将最终的 jar 文件复制到你的 docker 容器,所以它找不到 application-local.yml
文件,把这个也复制到你的 docker容器
COPY build/libs/application-local.yml /opt/apps/application-local.yml
关于java - 带有 java -jar 但带有参数的 docker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53757253/