[apolloconfig/apollo]环境变量覆盖apollo配置失败

2023-12-10 646 views
0

描述bug

多个应用引用同一个apollo配置时,不同应用间的配置差异我们采用了环境变量去覆盖apollo配置。但使用过程中,发现key中带"-"的配置使用此方式覆盖失败。

复现

通过如下步骤可以复现:

期望 配置应该被覆盖为true

截图

如果可以,附上截图来描述你的问题 1

额外的细节和日志
  • 版本:
  • 错误日志
  • 配置:
  • 平台和操作系统 2 3 4

回答

6

🤖

根据我在Apollo仓库中的查找,我没有找到关于环境变量覆盖配置时,键中包含"-"字符会失败的相关信息。Apollo配置管理系统通过在属性文件中使用占位符来处理环境变量。这些占位符由${<variable_name>}语法表示。

例如,在提供的上下文中,dev.meta=${dev_meta}意味着在运行时,dev.meta属性将被dev_meta环境变量的值替换。

这允许Apollo根据其运行的环境动态调整其配置,无需更改代码或重新编译应用程序。你可以在这个链接中查看相关的代码:apollo-portal/src/main/resources/apollo-env.properties

关于你提到的问题,我建议你提供更多的信息,例如你的环境变量和配置的具体情况,以及你在尝试覆盖配置时遇到的具体错误。这将有助于我更好地理解和解答你的问题。

Sources
2

不是同一种情况,还请人工帮忙看一下,感谢~

3

经过多次测试,不是带"-"的key覆盖失败,而是key-value左右值不相等才会覆盖失败,改成如下图格式后,环境变量是可以进行覆盖的(ps:也就是说想要用环境变量去覆盖apollo的配置,就必须保持key-value左右值相等。。)。 image

2

@ZeroSong211 这个是 spring 自身的配置规则,简而言之 test.param.enable-test 等同于环境变量 TEST_PARAM_ENABLE_TEST,两个都是 KEY,不是 value。

5

TEST_PARAM_ENABLE_TEST打错了吧。。应该是TEST_PARAM_ENABLE-TEST