This commit is contained in:
2026-09-11 10:45:04 +08:00
parent 5c8c0f6ad7
commit 9b34426c9f
8 changed files with 54 additions and 12 deletions
+35
View File
@@ -0,0 +1,35 @@
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())
}
}
}
}