具有不同环境的关键云中的 Spring Boot 应用程序

Posted

技术标签:

【中文标题】具有不同环境的关键云中的 Spring Boot 应用程序【英文标题】:Springboot application in pivotal Cloud with different environments 【发布时间】:2018-03-15 21:09:32 【问题描述】:

我正在使用具有不同测试环境(测试、QA、UAT、PROD)Spring 引导应用程序的 Pivotal Cloud Foundry 我创建了多个属性文件(每个都指向不同的数据库),例如

application-dev.properties
application-test.properties
application-qa.properties
application-uat.properties
application-prod.properties

如果它在本地,我通过设置 -Dspring.progiles.active=test/qa/uat/prod 运行

 mvn clean compile springboot:run -Dspring.progiles.active=test

如何根据云中的环境自定义我的应用程序以使用特定的属性文件? 我需要更改哪些配置?以下是我的application.properties 文件。

spring.profiles.active=test

spring.datasource.url=
spring.datasource.username=
spring.datasource.password=
spring.datasource.driver-class =org.hibernate.dialect.TeradataDialect
spring.jpa.database-platform=org.hibernate.dialect.TeradataDialect
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = none
spring.jpa.properties.hibernate.default_schema=

spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.TeradataDialect
server.port=9090

logging.level.org.springframework.web=INFO
logging.level.org.hibernate=INFO
logging.file=myapplication.log

或者当我搬到更高的环境时我需要改变吗?

提前致谢。

【问题讨论】:

【参考方案1】:

您可以为所有环境创建一个 applicaiton.yml 文件和单独的特定于环境的清单文件。使用弹簧配置文件功能添加特定于环境的属性。 Spring 将根据活动环境配置文件和清单文件自动选择属性。 示例 application.yml 可以有

spring:
  profiles:  default
  username: xyz

spring:
  profiles:  development
  username: abc

在特定环境的清单文件中,您可以拥有:

env:
  SPRING_PROFILES_ACTIVE: development

【讨论】:

【参考方案2】:

您必须利用 Spring Cloud Config Server 将所有属性文件移动到 GIT。在您的应用程序中,使用 bootstrap.yml 文件连接配置服务器,您将提供环境名称,例如 prod、dev、qa。

【讨论】:

那么,当我进入新环境时,我需要修改我的 bootstrap.yml 文件吗? applications: - name: SampleProject memory: 1G instances: 1 path: target\sampleProject-0.0.1-SNAPSHOT.jar env: SPRING_PROFILES_ACTIVE: TEST 您可以将 TEST 作为运行时作为参数传递给 bootstrap.yml 文件,而不是硬编码环境。

以上是关于具有不同环境的关键云中的 Spring Boot 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

使用 Flyway 和 Spring Boot 迁移具有不同生命周期的多个模式

spring boot不同环境读取不同配置

具有不同嵌入式服务器的 Spring Boot WAR 大小

spring boot指定不同的运行环境

Spring Boot+Profile实现不同环境读取不同配置

在两个不同端口上具有两个服务的 Spring Boot 应用程序