配置文件和环境配置
简介
因为go项目大多运行在容器或者k8s环境里,这里使用了yaml文件类型作为配置载体,.env文件作为环境变量声明,方便部署到k8s时候映射ConfigMap 到根目录。yaml支持多维度,支持写注释,作为配置载体最好不过了。
配置目录
config 目录是整个项目的配置集合,目录下所有yaml类型的配置都会被自动加载, 构建时候也会把整个config 目录打包到二进制文件里, 部署只需要关心.env文件
配置yaml 读取 .env 或者 环境变量
文件app.yaml内容, 其中的port 会被赋值成8080
servers:
http:
port: env("HTTP_PORT", "80")
.env, 这个文件会整个加载合并到环境变量里
HTTP_PORT=8080
使用
严谨的做法是注入到你的struct, 方便在启动应用时候就读取赋值,如果配置有错误时候,那么启动就会报错了,让错误提前暴露
// @Bean
type test struct {
// 注入配置
name string `inject:"config, app.name"`
}
动态获取
// Config 获取config
func Config(key string) interface{} {
return providers.NewConfigProvider().GetBean(key)
}
// ConfigString 获取config,格式必须是group.key,第二个可选参数为默认值
func ConfigString(key string, args ...string) string {
val := Config(key)
if val == nil {
if len(args) == 0 {
return ""
}
return args[0]
}
return *val.(*string)
}
GO 全栈框架封装
关于 LearnKu
推荐文章: