1

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 がそのようなユースケースをサポートしていないことを確認できますか?

任意のポインタをいただければ幸いです。

ありがとう

4

1 に答える 1