为了账号安全,请及时绑定邮箱和手机立即绑定

将命令行参数传递给在 Docker 中运行的 Java 应用程序(Spring Boot)

将命令行参数传递给在 Docker 中运行的 Java 应用程序(Spring Boot)

喵喵时光机 2022-05-25 16:38:21
我正在尝试将命令行参数传递给在Docker 容器中运行的Spring Boot应用程序的主要方法。从命令行运行,我会做这样的事情: $ mvn spring-boot:run -Dspring-boot.run.arguments=--greeting=Hello,--recipient=World应用程序需要提取这些 args 并对它们进行一些处理:public static void main(String[] args) {    Options options = new Options();    Option greeting = new Option("-g", "greeting", true, "Greeting");    greeting.setRequired(true);    greeting.addOption(greeting);    Option recipient = new Option("-r", "recipient", true, "Recipient");    recipient.setRequired(true);     recipient.addOption(recipient);    try {        cmd = parser.parse(options, args);    } catch (ParseException e) {        System.out.println(e.getMessage());        formatter.printHelp("utility-name", options);        System.exit(1);    }    // Do some processing using these args ...    // Run the Spring Boot app    SpringApplication.run(SpringBootApp.class, args);}我试过简单地使用-e标志传递它们:docker run -p 8080:8080 -d -e "greeting=Hello" -e "recipient=World" test-image我的Dockerfile样子是这样的:FROM openjdk:8-jdk-alpineVOLUME /tmpCOPY ./target/spring-boot-app-0.0.1-SNAPSHOT.jar app.jarENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]由于需要选项(args),我不断收到错误消息并且应用程序退出。
查看完整描述

2 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

您可以在run命令中的 docker 映像名称之后提供所有命令行参数。

例子:

docker run -p 8080:8080 test-image --recipient="World"--greeting="Hello"


查看完整回答
反对 回复 2022-05-25
?
撒科打诨

TA贡献1934条经验 获得超2个赞

您可以尝试像这样修改您ENTRYPOINTDockerfile

ENTRYPOINT exec java -jar -Dspring-boot.run.arguments=--greeting=Hello,--recipient=World

或者您可以在运行时传递参数:

docker run -p 8080:8080 test-image --recipient="World"--greeting="Hello"


查看完整回答
反对 回复 2022-05-25
  • 2 回答
  • 0 关注
  • 551 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号