从执行的bin中读取配置

时间:2018-10-21 14:32:44

标签: go bin

我正在使用go viper读取我的存储库中的config文件

myrepo
 -config.yaml
 -main.go

我使用以下代码

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

现在我将其编译为二进制文件,然后从 不同的路径(运行bin),但我收到未找到配置的错误,这里可能出什么问题了?

文件在那里,如果我在调试中使用ioutil.ReadFile,但不是从可执行文件中得到的...

1 个答案:

答案 0 :(得分:2)

因此,您告诉viper,它可以从位置./config.yaml读取配置。编译项目时,编译器不会使用二进制文件编译config.yaml内的配置数据。因此,每次二进制文件运行时,它都会寻找文件./config.yaml

因此您在这里没有什么选择。您可以使用二进制文件移动配置文件,并确保在复制二进制文件时也复制配置文件。另一个选择是将标志“ configpath”传递到配置路径,毒蛇应该读取该标志并获取配置。另一种选择是将配置放入您的.go文件中,这样可以编译配置(但我想这是您不想要的东西)