feat: 添加环境变量管理工具和部署配置改版
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m33s
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:
@@ -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`(包含所有配置)
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user