繁体   English   中英

我如何从Docker'run'命令设置Spring Boot属性

[英]How can i set Spring Boot properties from Docker 'run' command

我有一个Spring Boot应用程序,打算将其部署为Docker容器。

我正在使用DOCKERFILE构建带有入口点的图像: ENTRYPOINT ["java", "-jar", "myFolder/app.jar"]

映像将在JENKINSFILE中构建,如下所示:docker docker build . -t repo/app:latest docker build . -t repo/app:latest

我正在使用脚本来运行docker映像。 我想基于该脚本的参数设置自定义属性的值。

假设我有一个自定义属性: custom.property.isTest=false 它控制bean应该返回哪个类的实例,例如

@Value("${custom.property.isTest:false}")
boolean isTest;

@Bean
public MyService myServiceImpl(){
    if(isTest) {
        return new myServiceTestImpl();
    } else {
        return new myServiceImpl();
    }
}

我希望能够在运行docker映像时设置此值。 例如,使用参数: -e做类似的事情(不起作用) 'custom.property.isTest=true' 那可能吗?

谢谢

是的,您可以像-e UPPERCASE_OF_YOUR_PROPERTY这样传递此变量:

例:

docker run -d --name servie-name -e CUSTOM_PROPERTY_ISTEST=true  -p port:port image:tag

您有很多选择。 我建议阅读Spring Boot文档的Externalized Configuration部分 我只复制相关选项:

  • 您的主目录上的Devtools全局设置属性(在devtools处于活动状态时,为〜/ .spring-boot-devtools.properties)。
  • 命令行参数。
  • 来自SPRING_APPLICATION_JSON的属性(嵌入在环境变量或系统属性中的嵌入式JSON)。
  • Java系统属性(System.getProperties())。
  • 操作系统环境变量。
  • 打包的jar之外的特定于配置文件的应用程序属性(application- {profile} .properties和YAML变体)。
  • 打包在jar中的特定于配置文件的应用程序属性(application- {profile} .properties和YAML变体)。
  • 打包的jar之外的应用程序属性(application.properties和YAML变体)。
  • 打包在jar中的应用程序属性(application.properties和YAML变体)。

在docker文件中,运行命令...java -jar myapp.jar...您应该能够传递-Dcustom.property.isTest=false 如果您可以提供docker文件的代码段,将很有帮助。 参数可能用引号引起来(例如CMD java -jar myapp.jar "-DisTest=false"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM