关于 INI 配置文件与go-ini
1 )概述
- 在INI配置文件中可以处理各种数据的配置
- INI文件是一种简单的文本格式,常用于配置软件的各种参数
- go-ini 是地表 最强大、最方便 和 最流行 的 Go 语言 INI 文件操作库
- Github 地址:https://github.com/go-ini/ini
- 官方文档: https://ini.unknwon.io/
- 使用示例直达: https://ini.unknwon.io/docs/intro/getting_started
2 )使用
新建配置文件 conf/app.ini
app_name = xxproject
log_level = DEBUG # possible values: DEBUG, INFO, WARNING, ERROR, FATAL
admin_path = /admin
[mysql]
ip = 192.168.0.6
port = 3306
user = root
password = 123456
database = gin
[redis]
ip = 127.0.0.1
port = 6379
在 main.go 文件中测试核心代码文章来源:https://www.toymoban.com/news/detail-836306.html
package main
import (
"gopkg.in/ini.v1"
"github.com/gin-gonic/gin"
)
func main() {
// 创建一个默认的路由引擎
r := gin.Default()
//演示 "gopkg.in/ini.v1"模块的使用
config, err := ini.Load("./conf/app.ini")
if err != nil {
fmt.Printf("Fail to read file: %v", err)
os.Exit(1)
}
// 获取ini里面的配置
fmt.Println(config.Section("").Key("app_name").String())
fmt.Println(config.Section("mysql").Key("password").String())
fmt.Println(config.Section("redis").Key("ip").String())
// 给ini写入数据
config.Section("").Key("app_name").SetValue("yyyproject")
config.Section("").Key("admin_path").SetValue("/admin")
config.SaveTo("./conf/app.ini")
r.Run()
}
- 上面演示了获取 ini 数据 和 写入 ini 数据
- 如果是一些比较通用的数据建议写在一个go模块里,不用读取ini配置
- 但是关于第三方的一些东西,都可以抽离在最外层,适用于不同环境下配置不同的值
GIN 不同环境的部署使用不同的配置
- 在一般的部署中,会拆分研发环境,测试环境,UAT环境和生产环境四种
- 因为一些数据库等第三方配置不可能使用相同的源,必定会进行环境隔离
- 这时候就可以设定
development.ini
,test.ini
,uat.ini
,production.ini
- 这里举一个在 Jenkins 中的例子
- 在Jenkins中设置 ENV 环境变量
- 它的值将用于决定加载哪个INI文件
- 传递环境变量到Go程序
- 当Jenkins启动Go程序时,确保将ENV环境变量传递给它
- 这样,Go程序就可以根据这个变量加载相应的INI文件
下面是 main.go 中的读取示例文章来源地址https://www.toymoban.com/news/detail-836306.html
package main
import (
"fmt"
"log"
"gopkg.in/ini.v1"
"os"
)
func loadConfig(env string) (*ini.File, error) {
// 根据环境变量或其他机制确定INI文件路径
filePath := fmt.Sprintf("./conf/%s.ini", env)
cfg, err := ini.Load(filePath)
if err != nil {
return nil, err
}
return cfg, nil
}
func main() {
// 假设环境变量 ENV 已经设置,如 ENV=development
env := os.Getenv("ENV")
cfg, err := loadConfig(env)
if err != nil {
log.Fatalf("Failed to load configuration: %v", err)
}
// 读取配置信息
dbHost := cfg.Section("database").Key("host").String()
dbPort := cfg.Section("database").Key("port").MustInt()
// ... 其他配置
fmt.Printf("Database Host: %s, Port: %d\n", dbHost, dbPort)
}
- 这样,Jenkins 在不同环境执行部署的时候,由于不同环境下的 ENV 配置会设置到
- 当前的系统环境中,go程序在读取到ENV的时候,会引导读取不同的配置文件
- 由此,对各个部署环境进行区分和隔离
到了这里,关于Gin框架: 使用go-ini配置参数与不同环境下的配置部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!