我们正在使用 Viper 读取和解析我们的配置文件,所有这些都可以正常工作。
但是,我们无法使用 env 变量覆盖我们的一些配置值。这些是配置绑定到结构或结构数组的特定用例。
这是我们的 config.yaml 中的一个示例:
app:
verifiers:
- name: "test1"
url: "http://test1.url"
cache: "5000ms"
- name: "test2"
url: "http://test2.url"
cache: "10000ms"
绑定到以下结构(golang):
type App struct {
AppConfig Config `yaml:"app" mapstructure:"app"`
}
type Config struct {
Verifiers []VerifierConfig `json:"verifiers" yaml:"verifiers" mapstructure:"verifiers"`
}
type VerifierConfig struct {
Name string `json:"name" yaml:"name" mapstructure:"name"`
URL string `json:"url,omitempty" yaml:"url,omitempty" mapstructure:"url"`
cache jsontime.Duration `json:"cache" yaml:"cache" mapstructure:"cache"`
}
我们无法使用环境变量覆盖验证器的值。
以下是我们使用的 Viper 选项:
viper.AutomaticEnv()
viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
有没有人遇到过类似的问题,或者可以确认 Viper 不支持这样的用例?
任何指针将不胜感激。
谢谢