配置文件和环境配置
简介#
因为 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)
}
推荐文章: