配置文件和环境配置

未匹配的标注

简介#

因为 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
发起讨论 只看当前版本


暂无话题~