我想知道是否可以执行以下操作...
我在Java(和gradle)中有一个小型应用程序
我试图将其设置在容器中,所以我创建了Dockerfile并正常工作,直到必须设置参数为止。
要在我的IDLE上本地运行它,请设置以下程序参数:
server application-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没有任何作用,是我无法加载的配置文件并且不在罐子中(正常行为)
答案 0 :(得分:0)
使用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