具有不同环境的关键云中的 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 WAR 大小