java - 带有 java -jar 但带有参数的 docker?

标签 java docker

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

我在 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/

相关文章:

java - Selenium 中的 TestNG 和 JUnit 框架是什么

java - Android 中 RuntimeException ("Stub!"的含义

java - JSF 消息 : un-localize?

docker swarm 模式多个服务同一个端口

php - Docker 容器已链接但无法连接 mysql

python - Google Container Engine标准输出日志未显示

java - Jackson @JsonRawValue 用于 Map 的值

java - Swing 报告工具

visual-studio - 如何使用 docker-compose 启动 CosmosDB 模拟器?

linux - Docker Xdebug 局域网/公共(public)开发服务器