feat: 添加环境变量管理工具和部署配置改版
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m33s

主要改动:
- 新增交互式环境配置脚本 (scripts/setup-env.sh)
- 新增本地启动快捷脚本 (scripts/run-local.sh)
- 新增环境变量模板文件 (.env.example)
- 部署模式改版:使用嵌入式配置 + 环境变量覆盖
- 添加对象存储功能支持
- 改进 IoT 卡片导入任务
- 优化 OpenAPI 文档生成
- 删除旧的配置文件,改用嵌入式默认配置
This commit is contained in:
2026-01-26 10:28:29 +08:00
parent 194078674a
commit 45aa7deb87
94 changed files with 6532 additions and 1967 deletions

View File

@@ -0,0 +1,82 @@
# 实施任务清单
## 1. 配置嵌入模块
- [x] 1.1 创建 `pkg/config/defaults/config.yaml` 嵌入配置文件
- [x] 1.2 创建 `pkg/config/embedded.go`,实现 go:embed 加载逻辑
- [x] 1.3 重写 `pkg/config/loader.go`,使用嵌入配置 + 环境变量覆盖
- [x] 1.4 更新 `pkg/config/config.go` 中的 Validate() 方法,添加必填配置验证
- [x] 1.5 删除 `pkg/config/watcher.go` 配置热重载模块
- [x] 1.6 编写配置加载单元测试
## 2. 目录初始化模块
- [x] 2.1 创建 `pkg/bootstrap/directories.go`,实现 EnsureDirectories() 函数
- [x] 2.2 实现权限降级策略(权限不足时使用临时目录)
- [x] 2.3 编写目录初始化单元测试
- [x] 2.4 移除 `pkg/storage/s3.go` 中的目录创建逻辑
## 3. 应用入口改造
- [x] 3.1 更新 `cmd/api/main.go`,在配置加载后调用 bootstrap.EnsureDirectories()
- [x] 3.2 更新 `cmd/worker/main.go`,同样调用目录初始化
- [x] 3.3 调整 `internal/bootstrap/` 中的初始化顺序(无需修改,顺序正确)
## 4. Docker 配置更新
- [x] 4.1 更新 `Dockerfile.api`:预创建目录、移除 COPY configs
- [x] 4.2 更新 `Dockerfile.worker`:预创建目录、移除 COPY configs
- [x] 4.3 重写 `docker-compose.prod.yml`:纯环境变量配置
- [x] 4.4 简化 `docker/entrypoint-api.sh`:移除配置相关逻辑
## 5. 清理旧文件
- [x] 5.1 删除 `configs/config.yaml`
- [x] 5.2 删除 `configs/config.dev.yaml`
- [x] 5.3 删除 `configs/config.staging.yaml`
- [x] 5.4 删除 `configs/config.prod.yaml`
- [x] 5.5 删除 `configs/` 目录(如果为空)
## 6. 文档更新
- [x] 6.1 更新 README.md 部署说明
- [x] 6.2 更新环境变量列表文档(创建 docs/environment-variables.md
- [x] 6.3 更新关键文档auth-usage-guide, object-storage, add-default-admin-init
## 7. 验证
- [x] 7.1 本地运行测试:`go test ./...`config 和 bootstrap 测试通过)
- [x] 7.2 本地 Docker 构建测试API 和 Worker 镜像构建成功)
- [x] 7.3 本地 docker-compose 启动测试(需要外部 PostgreSQL/Redis配置验证通过
- [x] 7.4 验证环境变量覆盖功能TestLoad_EnvOverride 通过)
---
## 实施完成总结
**完成日期**: 2026-01-24
### 主要变更
1. **配置嵌入机制**
- 默认配置嵌入二进制文件 (`pkg/config/defaults/config.yaml`)
- 环境变量覆盖使用 `JUNHONG_` 前缀
- 移除配置热重载功能
2. **目录自动初始化**
- `pkg/bootstrap/directories.go` 实现 `EnsureDirectories()`
- 支持权限降级(无权限时使用临时目录)
3. **Docker 部署简化**
- 移除 `COPY configs` 指令
- 纯环境变量配置
- 更新 `docker-compose.prod.yml``entrypoint-api.sh`
4. **文档更新**
- 创建 `docs/environment-variables.md` 完整环境变量文档
- 更新 README.md 部署说明
- 更新相关功能文档
### 后续工作(可选)
- 更新剩余的旧文档rate-limiting.md, deployment-guide.md 等)