spring - 使用特定的 application.properties 文件将 Spring Boot 应用程序部署到 Heroku
问题描述
我想application.properties
为每个环境定义不同的文件。在本地工作时,我想定义一个 H2 数据库。对于测试环境(Heroku),我有一个 MySQL 数据库配置。因此,我想为此类工作案例定义完全不同的文件。
目前我有application.properties
本地海豚,并application-tst.properties
在 Heroku 中使用。但是我不知道如何在部署时选择合适的。
我的目标是让我在 Heroku 中运行的应用程序的配置与在本地机器上运行的应用程序不同。
解决方案
spring.profiles.active
您可以使用属性(文档)控制哪个配置文件处于活动状态。在 Heroku 上,您可以通过cli、仪表板或平台 API使用配置变量进行设置
命令行界面
要使用 cli 设置tst
配置文件,请尝试
$ heroku config:set SPRING_PROFILES_ACTIVE=tst
仪表板
导航到settings
选项卡并将键设置为SPRING_PROFILES_ACTIVE
并将值设置为tst
,然后单击save
。
平台 API
您可以使用多种工具来实现相同的结果,但是按照平台 API 文档,您可以使用curl
$ curl -n -X PATCH https://api.heroku.com/apps/$APP_ID_OR_NAME/config-vars \
-d '{ "SPRING_PROFILES_ACTIVE": "tst" }' \
-H "Content-Type: application/json" \
-H "Accept: application/vnd.heroku+json; version=3"
请注意,将spring.profiles.active
属性设置为 config var 会影响整个应用程序。
推荐阅读
- sap-erp - Excel VBScript 未激活 ECC 6.0 窗口
- java - 迁移到 JDK 11 时出现错误“java.lang.NoClassDefFoundError: javax/activation/DataSource”(tomcat 9.0.12)
- php - 只获取数组元素的第一个字符
- python - 不同批次大小的 TensorFlow 结果不一致
- compiler-construction - 多行注释语法问题 - LEX/YACC
- kubernetes - 持久卷和 OpenShift 3.11
- python - 某些代码行不在函数中执行
- php - 如果 DB 行值包含任何单引号,我不能在 mpdf 中使用单引号问题 ' 那么它不起作用
- r - 如何将具有不相等n的多个向量与另一个向量中的每个元素交叉相加
- node.js - 如何检测订阅者是否离开了 Redis PUB/SUB 频道?