Files
observer/server/common/config_env.go
T
2026-09-11 10:45:04 +08:00

36 lines
1.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package common
import (
"os"
"github.com/gogf/gf/v2/os/gcfg"
"github.com/gogf/gf/v2/frame/g"
)
// init 数据库配置的环境变量覆盖(同一份 config.yml 线上线下通用,不用改文件切环境):
// Docker 部署由 docker-compose 注入 DB_HOST/DB_NAME 指向容器网络内的 postgres
// 本地开发不注入,走 config.yml 默认值(127.0.0.1/animal_spot)。
// Set 是纯内存覆盖(不落盘),且必须发生在任何 g.DB() 调用(含 dao 包 init 建表)之前——
// common 包先于依赖它的 dao 包初始化,天然满足时序。
func init() {
overrides := [][2]string{
{"DB_HOST", "database.default.host"},
{"DB_NAME", "database.default.name"},
{"DB_PORT", "database.default.port"},
{"DB_USER", "database.default.user"},
{"DB_PASS", "database.default.pass"},
}
adapter, ok := g.Cfg().GetAdapter().(*gcfg.AdapterFile)
if !ok {
panic("数据库环境变量覆盖失败:默认配置适配器不是文件适配器")
}
for _, kv := range overrides {
if v := os.Getenv(kv[0]); v != "" {
if err := adapter.Set(kv[1], v); err != nil {
panic("环境变量覆盖配置失败 " + kv[0] + ": " + err.Error())
}
}
}
}