docs: 完善配置环境切换机制

- docker-compose.yml 添加 APP_ENV=prod 强制生产环境
- 更新 .env.example 的 APP_ENV 注释说明(开发/生产差异)
- CLAUDE.md 补充"配置环境切换"章节,说明本地开发和生产部署的配置切换方式
- 明确配置优先级:环境变量 > config.{env}.yaml > config.yaml > 默认值

配置差异:
- 开发环境:debug 日志、关闭限流、允许所有 CORS
- 生产环境:info/json 日志、启用限流、严格 CORS 白名单

验证通过:
- 本地开发:默认加载 config.dev.yaml(env=dev, debug 日志)
- 生产配置:APP_ENV=prod 加载 config.prod.yaml(env=prod, info 日志)
This commit is contained in:
hhs
2026-06-21 01:14:29 +08:00
parent 311330cea1
commit 515d7ae034
3 changed files with 27 additions and 2 deletions

View File

@@ -112,9 +112,30 @@ go vet ./... # 静态分析
> **注意**:前端目前没有测试基础设施(无 vitest 配置、无测试文件)。后端使用 `testing` + `testify`assert/require/mock测试编译期接口检查 `var _ Interface = (*Impl)(nil)`。
## 配置环境切换
项目通过 `APP_ENV` 环境变量控制配置文件加载:
- **本地开发**(默认):`APP_ENV=dev` → 加载 `config/config.dev.yaml`
- Debug 日志、关闭限流、允许所有 CORS
- 使用 `backend/.env` 中的远程 Redis/PostgreSQL 地址
- **生产部署**`APP_ENV=prod` → 加载 `config/config.prod.yaml`
- Info/JSON 日志、启用限流、严格 CORS 白名单
- Docker Compose 自动设置,使用容器内网地址
**配置优先级**:环境变量 > config.{env}.yaml > config.yaml > 默认值
**手动切换环境**(测试用):
```bash
cd backend
APP_ENV=prod go run ./cmd/server # 本地测试生产配置
APP_ENV=dev go run ./cmd/server # 显式指定开发配置
```
## 配置系统
配置文件:`backend/config.yaml`默认值),可被 `config.{env}.yaml` 覆盖。
配置文件:`backend/config/config.yaml`基础配置),可被 `config/config.{env}.yaml` 覆盖。
**优先级(从低到高)**:默认值 → `config.yaml``config.{env}.yaml`(由 `APP_ENV` 环境变量决定加载哪个 env 特定文件)→ `.env` 文件 → 环境变量

View File

@@ -1,5 +1,7 @@
# 运行环境
# dev / prod决定加载 config.dev.yaml 或 config.prod.yaml可选
# dev本地开发环境debug 日志、关闭限流、允许所有 CORS
# prod生产环境info 日志、启用限流、严格 CORS 白名单)
# 本地开发保持 dev生产部署会被 docker-compose.yml 覆盖为 prod
APP_ENV=dev
# AI 服务 API Key

View File

@@ -20,6 +20,8 @@ services:
env_file:
- /opt/camtalk/.env
environment:
# 运行环境(强制生产环境)
- APP_ENV=prod
# 三级存储配置(敏感信息通过 env_file 注入)
- CAMTALK_STORAGE_REDIS_ENABLED=${CAMTALK_STORAGE_REDIS_ENABLED:-true}
- CAMTALK_STORAGE_PERSISTENCE_ENABLED=${CAMTALK_STORAGE_PERSISTENCE_ENABLED:-true}