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:
23
CLAUDE.md
23
CLAUDE.md
@@ -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` 文件 → 环境变量
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user