目前跟着抖音商城项目课程学到了项目配置的内容,记录一下所学到的东西。
1 conf文件夹
在使用 Kitex 脚手架生成的项目中会包含一个 conf 文件夹,通常用于存放项目的配置信息。conf文件夹的结构如下:
conf/
├── config.yaml
├── config.go
└── README.md
1.1 config.yaml
config.yaml 是项目中的主要配置文件,它用于存储与服务相关的配置信息,例如数据库连接、服务端口、日志设置等。
kitex:
service: "demo_proto"
address: ":8888"
log_level: info
log_file_name: "log/kitex.log"
log_max_size: 10
log_max_age: 3
log_max_backups: 50
registry:
registry_address:
- 127.0.0.1:8500
username: ""
password: ""
mysql:
# 利用占位符来实现匹配各种数据库连接串格式
dsn: "%s:%s@tcp(%s:3307)/%s?charset=utf8mb4&parseTime=True&loc=Local"
随后利用.env文件方式设置项目的环境变量,在mysql文件夹中的init.go当中获取环境变量,便可以完成对mysql数据库的初始化操作,
2 go语言环境变量的设置
在 Go 语言中,环境变量通常用于存储和管理与环境相关的配置信息,如数据库连接信息、API 密钥、服务端口等。环境变量的使用是为了避免将敏感信息硬编码在代码中,提供更灵活的配置管理,尤其是在容器化和云原生应用中,环境变量的使用非常普遍。
2.1 Go语言标准库方法
Go 语言提供了 os 包来访问和操作环境变量。你可以使用 os.Getenv 来获取环境变量的值,os.Setenv 来设置环境变量的值(仅对当前程序有效)。
os.Getenv:获取环境变量的值,若环境变量不存在则返回空字符串。os.Setenv:设置环境变量的值。
2.1.1 获取环境变量
func main() {
// 获取环境变量
value := os.Getenv("MY_VARIABLE")
}
2.1.2 设置环境变量
func main() {
// 设置环境变量
err := os.Setenv("MY_VARIABLE", "value")
// 获取环境变量
value := os.Getenv("MY_VARIABLE")
fmt.Println("MY_VARIABLE:", value)
}
2.1.3 使用 os.LookupEnv 来检查环境变量是否存在
os.LookupEnv 方法会返回两个值:第一个值是环境变量的值,第二个值是一个布尔值,指示环境变量是否存在。如果环境变量不存在,返回值为 false,你可以根据这个值决定如何处理。
func main() {
// 使用 LookupEnv 获取环境变量
value, exists := os.LookupEnv("MY_VARIABLE")
}
2.2 .env文件
.env 文件是用于存储环境变量的一种常见文件格式,通常用于本地开发环境中,方便管理配置项。它是一个文本文件,包含键值对形式的环境变量,每一行代表一个环境变量的定义。
# .env 文件
DB_HOST=localhost
DB_PORT=3306 DB_USER=root
DB_PASSWORD=password
LOG_LEVEL=debug
随后使用godotenv.Load()方法加载当前目录之下的.env文件,并将其中的键值对设置为环境变量。
小结
这几周一下子见识到了许多不会的知识如kitex中的各种包、gorm和docker的使用,感觉自己欠缺的东西很多,但是go语言学习起来还是比较有意思有动力的,希望自己能一直保持着这种动力。