Считать конфиг из выполненного бина - PullRequest
0 голосов
/ 21 октября 2018

Я использую go viper для чтения config файла в моем репо

myrepo
 -config.yaml
 -main.go

Я использую следующий код

viper.SetConfigName("config")
viper.AddConfigPath(".")
viper.SetConfigType("yaml")
err := viper.ReadInConfig()

А теперь я скомпилировал его в двоичный файл и теперь я работаюэто из другого пути (запустить корзину), и я получил ошибку, что конфиг не найден, что здесь может быть не так?

Файл существует, и если я использую ioutil.ReadFile в отладке, я получаю его, но не из исполняемого файла ...

1 Ответ

0 голосов
/ 21 октября 2018

Итак, вы сказали viper, что он может прочитать конфиг из местоположения ./config.yaml.Когда вы компилируете проект, компилятор не компилирует данные конфигурации внутри config.yaml с двоичным файлом.Следовательно, каждый раз, когда исполняется двоичный файл, он ищет файл ./config.yaml.

, поэтому у вас есть несколько вариантов здесь.Либо вы перемещаете файл конфигурации с двоичным файлом и убедитесь, что при копировании двоичного файла вы также копируете конфигурацию.Другой вариант, который у вас есть, это иметь флаг "configpath", которому вы передаете путь конфигурации, и viper должен прочитать этот флаг и получить конфиги.Другой вариант - поместить конфигурацию в ваш файл .go и таким образом скомпилировать конфигурацию (но я предполагаю, что это то, что вам не нужно)

...