配置指南
1. 环境变量注入
应用支持用环境变量覆盖关键配置项。这在 Docker/Kubernetes 环境下尤为重要——
敏感信息不应硬编码在 config.json 中。
支持的环境变量
| 变量名 | 说明 | 覆盖的配置路径 | 示例 |
|---|---|---|---|
FULLA_DB_HOST | 数据库主机名 | db_clients[0].host | postgres |
FULLA_DB_NAME | 数据库名 | db_clients[0].dbname | fulla_db |
FULLA_DB_PASSWORD | 数据库密码 | db_clients[0].passwd | secret |
FULLA_REDIS_HOST | Redis 主机名 | redis_clients[0].host | redis |
FULLA_REDIS_PASSWORD | Redis 密码 | redis_clients[0].passwd | secret |
FULLA_PORTAL_CLIENT_SECRET | 门户客户端密钥(旧名别名:FULLA_VUE_CLIENT_SECRET) | plugins[OAuth2Plugin].config.clients.fulla-portal.secret | ... |
生产部署的完整环境变量清单(30+ 项)见生产部署的变量表;本表只列注入机制的六个核心项。
工作机制
- 加载钩子:启动时
main.cc的loadConfiguration()先调用common::config::ConfigManager::load(),再调用ConfigManager::validate()。 - 解析:把基础
config.json读入Json::Value对象。 - 注入:检查上述环境变量是否存在;存在则就地更新
Json::Value中对应节点。 - 加载:Drogon 通过
drogon::app().loadConfigJson(config)直接加载修改后的配置对象,磁盘上不产生临时文件。
验证
专用测试 EnvInjectionVerify(EnvConfigTest.cc)保证该逻辑正确。
2. Docker 部署
仓库内置 docker-compose.yml 编排全栈(详解见 Docker 部署)。
服务栈
- fulla-frontend:Vue SPA + Nginx(构建自
deploy/docker/Dockerfile的frontend-runtime)。 - fulla-admin:管理后台前端(构建自
frontends/admin/Dockerfile)。 - fulla-backend:Drogon 后端(构建自
deploy/docker/Dockerfile的backend-runtime)。 - fulla-postgres:PostgreSQL 17(后端启动时经
FULLA_AUTO_MIGRATE=true应用apps/server/migrations/下的 schema)。 - fulla-redis:带密码保护的 Redis 7。
- fulla-prometheus:指标采集。