gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 10:08:23 25 4
gpt4 key购买 nike

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com