具有Java -jar但具有参数的docker?

时间:2018-12-13 07:52:06

标签: java docker

我想知道是否可以执行以下操作...

我在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没有任何作用,是我无法加载的配置文件并且不在罐子中(正常行为)

1 个答案:

答案 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