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

@@ -44,7 +44,7 @@
│ │ │
│ ┌───────────▼─────────────────────┐ │
│ │ 服务运行中 │ │
│ │ - API: 0.0.0.0:8088 │ │
│ │ - API: 0.0.0.0:3000 │ │
│ │ - Worker: 后台任务处理 │ │
│ └──────────────────────────────────┘ │
└───────────────────────────────────────┘
@@ -98,81 +98,34 @@ docker ps | grep runner
mkdir -p /home/qycard001/app/junhong_cmp
cd /home/qycard001/app/junhong_cmp
# 创建必要的子目录
mkdir -p configs logs
# 创建日志目录(配置已嵌入二进制文件,无需 configs 目录)
mkdir -p logs
```
### 1.3 准备配置文件
### 1.3 配置说明
#### 创建 `.env` 文件(数据库迁移配置)
系统使用**嵌入式配置 + 环境变量覆盖**机制:
- 默认配置已编译在二进制文件中
- 通过 `docker-compose.prod.yml` 中的环境变量覆盖配置
- 环境变量前缀:`JUNHONG_`
- 格式:`JUNHONG_{配置路径}`,路径分隔符用下划线替代点号
**无需手动创建配置文件**,所有配置在 `docker-compose.prod.yml``environment` 中管理。
### 1.4 部署文件
`docker-compose.prod.yml` 由 CI/CD 自动从代码仓库复制到部署目录,无需手动操作。
如需手动部署,可从代码仓库复制:
```bash
cat > /home/qycard001/app/junhong_cmp/.env << 'EOF'
MIGRATIONS_DIR=migrations
DB_HOST=cxd.whcxd.cn
DB_PORT=16159
DB_USER=erp_pgsql
DB_PASSWORD=erp_2025
DB_NAME=junhong_cmp_test
DB_SSLMODE=disable
EOF
```
#### 创建 `configs/config.yaml`(应用配置)
```bash
cat > /home/qycard001/app/junhong_cmp/configs/config.yaml << 'EOF'
server:
port: 8088
read_timeout: 60
write_timeout: 60
database:
host: cxd.whcxd.cn
port: 16159
user: erp_pgsql
password: erp_2025
dbname: junhong_cmp_test
sslmode: disable
max_open_conns: 100
max_idle_conns: 10
redis:
host: 你的Redis地址
port: 6379
password: ""
db: 0
logging:
level: info
output: logs/app.log
max_size: 100
max_backups: 7
max_age: 30
compress: true
middleware:
enable_rate_limiter: false
EOF
```
**重要**:将 `你的Redis地址` 替换为实际的 Redis 地址。
### 1.4 复制部署文件
从代码仓库复制 `docker-compose.prod.yml` 到服务器:
```bash
# 在服务器上执行
cd /home/qycard001/app/junhong_cmp
# 方式1: 使用 Git推荐
# 方式1: 使用 Git
git clone <你的仓库地址> temp
cp temp/docker-compose.prod.yml ./docker-compose.prod.yml
rm -rf temp
# 方式2: 从本地上传
# 在本地执行:
# scp -P 52022 docker-compose.prod.yml qycard001@47.111.166.169:/home/qycard001/app/junhong_cmp/
```
@@ -251,7 +204,7 @@ docker-compose -f docker-compose.prod.yml logs -f
```bash
# 测试 API 健康检查
curl http://localhost:8088/health
curl http://localhost:3000/health
# 预期输出:
# {"code":0,"msg":"ok","data":{"status":"healthy"},"timestamp":1234567890}
@@ -397,9 +350,9 @@ docker system prune -a -f --volumes
**排查步骤**
1. 查看容器日志:`docker-compose -f docker-compose.prod.yml logs api`
2. 检查配置文件是否正确数据库连接、Redis 连接)
2. 检查 `docker-compose.prod.yml` 中的环境变量配置是否正确数据库连接、Redis 连接)
3. 确认外部依赖PostgreSQL、Redis是否可访问
4. 手动测试健康检查:`curl http://localhost:8088/health`
4. 手动测试健康检查:`curl http://localhost:3000/health`
### Q2: 数据库迁移失败
@@ -470,7 +423,7 @@ docker restart docker-runner-01
```bash
# 仅开放必要端口
sudo ufw allow 52022/tcp # SSH
sudo ufw allow 8088/tcp # API如果需要外部访问
sudo ufw allow 3000/tcp # API如果需要外部访问
sudo ufw enable
```
@@ -480,7 +433,7 @@ docker restart docker-runner-01
4. **备份策略**
- 定期备份数据库
- 定期备份配置文件(`.env`、`config.yaml`
- 定期备份 `docker-compose.prod.yml`(包含所有配置
---