Beego 不支持多配置文件,必须用单个 conf/app.conf + 环境变量注入实现多环境;${VAR||default} 占位符必须用双引号包裹,否则解析失败;v2 版本需显式调用 core/config.LoadConfig 加载配置,否则 AppConfig 为空。

Beego 不支持也不推荐用多个配置文件(如 app.dev.conf、app.prod.conf)来切换环境。它靠单个 conf/app.conf + 环境变量注入实现多环境,硬分文件反而破坏容器镜像不可变性,CI/CD 一跑就挂。
conf/app.conf 必须用双引号包裹 ${VAR||default} 占位符
Beego 内置解析器只识别带引号的环境变量语法,且整个值必须被双引号包围。不加引号会被当纯字符串处理,变量根本不会展开。
- ✅ 正确:
db_host="${MINDOC_DB_HOST||127.0.0.1}" - ❌ 错误:
db_host=${MINDOC_DB_HOST||127.0.0.1}(无引号 → 解析失败,值为字面量) - ❌ 错误:
db_host="${MINDOC_DB_HOST}127.0.0.1"(拼接写法 → 环境变量不生效,fallback 失效)
这个规则在 Beego v1 和 v2 中一致,但 v2 的 core/config 包校验更严格,缺引号会直接报错或静默留空。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
Beego v2 必须显式调用 LoadConfig 才能加载 app.conf
v2 版本拆分了包结构,beego.Run() 不再自动加载 conf/app.conf。如果跳过这步,beego.AppConfig.String("httpport") 会返回空字符串,服务监听默认端口(如 0.0.0.0:8080),而不是你配的值。
- 启动前必须手动加载:
cfg, _ := core/config.LoadConfig("ini", "conf/app.conf") - 再赋值给全局配置:
beego.BConfig = cfg.(*core/config.BConfig) - 本地调试用
bee run时,确保终端已export MINDOC_DB_HOST=10.10.10.10,否则 fallback 到默认值(比如sqlite3)
Docker 或 CI/CD 中通过 environment 注入变量即可
不用改文件名、不用复制配置、不用写 shell 脚本替换内容。只要 conf/app.conf 里全是占位符,所有环境共用同一份模板文件。
- Docker Compose 示例:
environment: ["MINDOC_DB_ADAPTER=mysql", "MINDOC_DB_PORT=3306"] - Kubernetes ConfigMap/Secret 挂载后,通过
envFrom注入到容器环境 - CI/CD 流水线(如 GitHub Actions)直接在
env:块里定义变量,启动命令不变
真正容易被忽略的是:v2 的配置加载是“显式且一次性”的,漏掉 LoadConfig 或路径写错(比如写成 "./conf/app.conf" 但工作目录不是二进制所在路径),会导致整个配置系统失效,而错误现象只是“端口没生效”“数据库连不上”,很难联想到是加载逻辑缺失。

















