Dropwizard 配置覆盖
Dropwizard config override
我正在使用 Dropwizard 开发 RESTful 服务。现在我需要将它部署到不同的环境(测试、暂存、生产)和数据中心(中国、美国等)。因此,它需要针对不同的 environment/data-center.
进行不同的配置
想知道这通常是如何处理的?我可能每个 env/dc 都有一个配置,但在那种情况下,它们将有很多重复的通用配置。
我原以为我有一个基本配置,比如 base.yaml,其中包含常用配置;然后每个环境和 DC 将有一个配置,extend/override 带有自定义配置的基本 yaml。这在 Dropwizard 中可行吗?
谢谢!
我认为 DropWizard 没有该功能,但您始终可以编写一个小脚本来组成一些 YAML 文件并使用结果启动 DropWizard。您可以使用像 Mustache 这样的简单模板引擎。
config-template.yml
:
# ...
server:
applicationConnectors:
- type: http
port: {{PORT}}
config-parms-us.yml
:
---
PORT: "8080"
---
然后使用:
mustache config-parms-us.yml config-template.yml > config.yml
java ... server config.yml
我想这就是您要找的:
https://github.com/constretto/constretto-dropwizard
它允许您像这样进行特定于环境的配置:
database: # the JDBC URL
url: jdbc:oracle:thin:@//oracle-testing:1521/name
.staging.url: jdbc:oracle:thin:@//oracle-staging:1521/name
.production.url: jdbc:oracle:thin:@//oracle-production:1521/name
当您想在特定环境下启动您的应用程序时,请使用:
-DCONSTRETTO_TAGS=$ENVIRONMENT
您可以创建自己的配置包来实现 Bundle
添加您自己的配置设置。
因此您还需要创建自己的 ConfigurationSourceProvider
,然后覆盖 open(String path)
方法,因此您可以在这里找到您的配置基名。
最后你可以实现EnvironmentAware
,它可以帮助你解析所有的配置文件,这是一个url的列表。你可以设置你想要加载的默认名称。
我正在使用 Dropwizard 开发 RESTful 服务。现在我需要将它部署到不同的环境(测试、暂存、生产)和数据中心(中国、美国等)。因此,它需要针对不同的 environment/data-center.
进行不同的配置想知道这通常是如何处理的?我可能每个 env/dc 都有一个配置,但在那种情况下,它们将有很多重复的通用配置。
我原以为我有一个基本配置,比如 base.yaml,其中包含常用配置;然后每个环境和 DC 将有一个配置,extend/override 带有自定义配置的基本 yaml。这在 Dropwizard 中可行吗?
谢谢!
我认为 DropWizard 没有该功能,但您始终可以编写一个小脚本来组成一些 YAML 文件并使用结果启动 DropWizard。您可以使用像 Mustache 这样的简单模板引擎。
config-template.yml
:
# ...
server:
applicationConnectors:
- type: http
port: {{PORT}}
config-parms-us.yml
:
---
PORT: "8080"
---
然后使用:
mustache config-parms-us.yml config-template.yml > config.yml
java ... server config.yml
我想这就是您要找的: https://github.com/constretto/constretto-dropwizard
它允许您像这样进行特定于环境的配置:
database: # the JDBC URL
url: jdbc:oracle:thin:@//oracle-testing:1521/name
.staging.url: jdbc:oracle:thin:@//oracle-staging:1521/name
.production.url: jdbc:oracle:thin:@//oracle-production:1521/name
当您想在特定环境下启动您的应用程序时,请使用:
-DCONSTRETTO_TAGS=$ENVIRONMENT
您可以创建自己的配置包来实现 Bundle
添加您自己的配置设置。
因此您还需要创建自己的 ConfigurationSourceProvider
,然后覆盖 open(String path)
方法,因此您可以在这里找到您的配置基名。
最后你可以实现EnvironmentAware
,它可以帮助你解析所有的配置文件,这是一个url的列表。你可以设置你想要加载的默认名称。