配置文件和环境配置

未匹配的标注

简介

因为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)
}

项目地址 通用工具

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~