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_PASS 指向容器网络内的 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()) } } } }