Проблемы с переопределением конфигурации с использованием переменных ENV в Viper - PullRequest
0 голосов
/ 04 мая 2020

Мы используем Viper для чтения и анализа нашего конфигурационного файла, и все это работает без каких-либо проблем.

Однако мы не можем переопределить некоторые из наших значений конфигурации с помощью переменных env. Это конкретные c случаи использования, когда конфигурация привязана к структуре или массиву структур.

Вот пример из нашего 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"`
}

Мы не можем переопределить значение верификаторов, используя переменные env.

Вот опции Viper, которые мы использовали:

viper.AutomaticEnv()
viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))

Кто-нибудь сталкивался с подобной проблемой или может подтвердить, что Viper не поддерживает такой вариант использования?

Любой указатели будут с благодарностью.

Спасибо

1 Ответ

0 голосов
/ 04 мая 2020

Вот как я использовал его ранее

app:
  debug: ${DEBUG}

И запустите его как:

DEBUG=true ./hobbyproject
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...