chore(trans_hub): 更新子模块提交引用

- 将 trans_hub 子模块从 ec4933005c29aa6f647e7729d5bba8a03a066563 更新到 ce4850724c2a3d9685488f6bfaf3fdd05cf6ae1f
This commit is contained in:
zhouyonggao 2026-03-16 18:19:29 +08:00
parent eaf4be7047
commit 5afb699635
3 changed files with 427 additions and 1 deletions

425
DEPLOY.md Normal file
View File

@ -0,0 +1,425 @@
# 邮储银行积分商城服务部署步骤
## 前置条件
1. Docker Swarm 集群已搭建
2. NFS 服务器已配置172.29.104.45
3. Harbor 镜像仓库可访问
4. Goploy 部署平台已配置
---
## 一、准备工作
### 1.1 创建配置文件
#### 1.1.1 复制配置模板
```bash
cd /Users/zhouyonggao/Project/post-bank-point-mall
cp trans_hub/app/ymt/post_bank_point_mall/service/configs/config.yaml \
trans_hub/app/ymt/post_bank_point_mall/service/configs/config-prod.yaml
```
#### 1.1.2 修改生产环境配置
编辑 `trans_hub/app/ymt/post_bank_point_mall/service/configs/config-prod.yaml`
```yaml
env: prod # 改为 prod
server:
http:
addr: ":12022"
timeout: 30s
data:
db:
driver: mysql
source: root:密码@tcp(数据库地址3306)/transfer?charset=utf8mb4&parseTime=true&loc=Local
maxIdle: 5
maxOpen: 20
maxLifetime: 5s
isDebug: false # 生产环境关闭 debug
redis:
addr: Redis 地址6379
password: Redis 密码
readTimeout: 3s
writeTimeout: 3s
poolSize: 5
minIdleConns: 2
connMaxIdleTime: 30s
db: 4
config:
# 根据实际业务修改配置
task:
interval: 5s
batchSize: 50
concurrency: 5
psbc:
domain: "https://正式环境域名"
fileDomain: "https://文件服务域名"
merchantId: "正式商户 ID"
# ... 其他配置
```
---
## 二、服务器端操作(只需在 Docker Swarm 管理节点执行一次)
> 💡 **提示**:管理节点是运行 `docker stack deploy` 命令的节点,可以通过 `docker node ls` 查看节点角色MANAGER STATUS 为 `Leader``Reachable` 的即为管理节点。
### 2.1 创建 NFS 配置目录
```bash
# SSH 登录到 Swarm 管理节点Leader 节点)
ssh root@manager-node # 替换为你的管理节点 IP
# 验证是否为管理节点
docker node ls # MANAGER STATUS 列显示 Leader 或 Reachable
# 创建 NFS 目录
mkdir -p /data/nfs/trans-hub/post_bank_point_mall/config
# 设置权限
chmod 755 /data/nfs/trans-hub/post_bank_point_mall/config
```
### 2.2 上传配置文件到 NFS 服务器
> 💡 **说明**NFS 服务器可以是独立服务器,也可以是 Swarm 集群中的某个节点。配置文件只需上传一次,所有节点通过 NFS 共享访问。
```bash
# 从本地上传配置文件到 NFS 服务器
cd /Users/zhouyonggao/Project/post-bank-point-mall
# 如果 NFS 服务器是独立服务器172.29.104.45
scp trans_hub/app/ymt/post_bank_point_mall/service/configs/config-prod.yaml \
root@172.29.104.45:/data/nfs/trans-hub/post_bank_point_mall/config/config.yaml
# 验证文件是否存在
ssh root@172.29.104.45 "cat /data/nfs/trans-hub/post_bank_point_mall/config/config.yaml"
```
---
## 三、Goploy 部署配置
### 3.1 创建项目
登录 Goploy点击"新建项目"
### 3.2 基本配置
| 配置项 | 值 |
|--------|-----|
| 名称 | `邮储银行积分商城` |
| 仓库地址 | `ssh://git@gitea.cdlsxd.cn:222/transfer_project/trans_hub.git` |
| 部署路径 | `/root/wwwroot/servers/trans_hub_post_bank_point_mall` |
| 环境 | `测试环境``生产环境` |
| 分支 | `post_bank_point_mall` |
| 传输方式 | `sftp` |
| 传输选项 | `-rtv --exclude-regexexp='*' --include-regexexp='^.sh config/' --include=.env` |
| 服务器 | 选择目标服务器 |
| 用户 | 选择部署用户 |
### 3.3 自定义变量
添加以下变量:
| 变量名 | 类型 | 值 |
|--------|------|-----|
| `CONTAINER_NAME` | string | `post_bank_point_mall` |
### 3.4 拉取后运行脚本(构建镜像)
```bash
#!/bin/bash
export VERSION=$(git describe --tags --always)
echo "CONTAINER_NAME=${CONTAINER_NAME}" >> .env
echo "VERSION=${VERSION}" >> .env
source .env
# 构建镜像
docker build --build-arg CODEUP_USER="你的账号" \
--build-arg CODEUP_PASS="你的密码" \
--build-arg VERSION="${VERSION}" \
--build-arg SERVICE_NAME="${CONTAINER_NAME}" \
-t ${CONTAINER_NAME}:${VERSION} \
-f trans_hub/app/ymt/post_bank_point_mall/service/Dockerfile \
trans_hub/app/ymt/post_bank_point_mall/service
# 推送到 Harbor
docker tag ${CONTAINER_NAME}:${VERSION} harbor.dev.cdlsxd.cn/common/${CONTAINER_NAME}:${VERSION}
docker login harbor.dev.cdlsxd.cn -u admin -p Harbor8@121212
docker push harbor.dev.cdlsxd.cn/common/${CONTAINER_NAME}:${VERSION}
echo "镜像构建完成:${CONTAINER_NAME}:${VERSION}"
```
### 3.5 部署后运行脚本(更新服务)
```bash
#!/bin/bash
source ${PROJECT_PATH}/.env
echo "${UP_VERSION} ${CONTAINER_NAME} ${VERSION}"
# 登录 Harbor
docker login harbor.dev.cdlsxd.cn -u admin -p Harbor8@121212
# 拉取最新镜像
docker pull harbor.dev.cdlsxd.cn/common/${CONTAINER_NAME}:${VERSION}
# 更新服务
docker service update \
--image harbor.dev.cdlsxd.cn/common/${CONTAINER_NAME}:${VERSION} \
trans-hub_${CONTAINER_NAME}
echo "服务更新完成!"
```
---
## 四、首次部署 Stack
### 4.1 上传部署脚本到 Docker Swarm 管理节点
> ⚠️ **重要**必须上传到管理节点Manager Node因为 `docker stack deploy` 命令只能在管理节点执行。
```bash
# 1. 找到管理节点(在你的机器上执行)
ssh root@你的管理节点 IP
# 2. 验证节点角色
docker node ls
# 输出示例:
# ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
# abc123 manager Ready Active Leader 20.10.x ← 这是管理节点
# def456 worker1 Ready Active 20.10.x ← 这是工作节点
# 3. 上传文件到管理节点(在你的机器上执行)
cd /Users/zhouyonggao/Project/post-bank-point-mall/devops/stack/business/post-bank-point-mall
scp deploy.sh root@你的管理节点 IP:/root/
scp post-bank-point-mall-stack.yml root@你的管理节点 IP:/root/
```
### 4.2 在管理节点执行部署
```bash
# SSH 登录到管理节点
ssh root@你的管理节点 IP
# 验证当前节点是管理节点
docker node ls # 确认 MANAGER STATUS 列有值
# 进入部署目录
cd /root
# 执行部署脚本
bash deploy.sh
```
### 4.3 验证部署
```bash
# 查看服务状态
docker service ls
# 查看服务详情
docker service ps trans-hub_post_bank_point_mall
# 查看服务日志
docker service logs trans-hub_post_bank_point_mall -f
# 测试服务
curl -I http://localhost:12022/health
```
---
## 五、配置更新
### 5.1 更新配置文件
```bash
# 修改本地配置
vim trans_hub/app/ymt/post_bank_point_mall/service/configs/config-prod.yaml
# 重新上传到 NFS
scp trans_hub/app/ymt/post_bank_point_mall/service/configs/config-prod.yaml \
root@172.29.104.45:/data/nfs/trans-hub/post_bank_point_mall/config/config.yaml
```
### 5.2 重启服务(可选)
某些配置需要重启才能生效:
```bash
docker service update --force trans-hub_post_bank_point_mall
```
---
## 六、注意事项
### 6.1 配置安全
⚠️ **敏感信息处理**
- 数据库密码、Redis 密码等敏感信息不要提交到 Git
- 生产环境使用 Docker Secret 管理敏感信息
- 配置文件设置合适的权限:`chmod 600 config.yaml`
### 6.2 端口冲突
⚠️ **检查端口占用**
```bash
# 部署前检查端口是否被占用
netstat -tlnp | grep 12022
# 如果端口被占用,修改配置文件中的端口
```
### 6.3 数据库连接
⚠️ **确保数据库可访问**
- 测试数据库连接:`telnet 数据库 IP 3306`
- 确保防火墙允许 Docker 网络访问数据库
- 检查数据库用户权限
### 6.4 Redis 连接
⚠️ **确保 Redis 可访问**
- 测试 Redis 连接:`redis-cli -h Redis 地址 -p 6379`
- 检查 Redis 密码是否正确
- 确认 Redis 最大连接数足够
### 6.5 日志查看
```bash
# 查看实时日志
docker service logs trans-hub_post_bank_point_mall -f
# 查看最近 100 行日志
docker service logs trans-hub_post_bank_point_mall --tail 100
# 查看错误日志
docker service logs trans-hub_post_bank_point_mall 2>&1 | grep ERROR
```
### 6.6 服务回滚
如果部署失败,回滚到上一个版本:
```bash
docker service rollback trans-hub_post_bank_point_mall
```
### 6.7 扩容/缩容
```bash
# 扩容到 3 个副本
docker service update --replicas 3 trans-hub_post_bank_point_mall
# 缩容到 1 个副本
docker service update --replicas 1 trans-hub_post_bank_point_mall
```
### 6.8 健康检查
确保服务健康检查正常:
```bash
# 查看健康检查状态
docker service inspect trans-hub_post_bank_point_mall --format='{{.Spec.Healthcheck}}'
```
---
## 七、常见问题
### Q1: 服务启动失败
```bash
# 查看日志
docker service logs trans-hub_post_bank_point_mall --tail 200
# 常见原因:
# - 配置文件路径错误
# - 数据库连接失败
# - 端口被占用
```
### Q2: NFS 挂载失败
```bash
# 检查 NFS 服务器
showmount -e 172.29.104.45
# 手动测试挂载
mount -t nfs 172.29.104.45:/data/nfs/trans-hub/post_bank_point_mall/config /mnt
```
### Q3: 镜像拉取失败
```bash
# 检查 Harbor 连接
docker login harbor.dev.cdlsxd.cn
# 检查镜像是否存在
docker images | grep post_bank_point_mall
```
---
## 八、监控和告警
### 8.1 服务监控
```bash
# 查看服务状态
watch -n 2 'docker service ls | grep post_bank_point_mall'
# 查看资源使用
docker stats $(docker ps -q | head -5)
```
### 8.2 日志收集
建议配置日志收集系统(如 ELK、Loki
- 实时查看日志
- 日志搜索和过滤
- 告警通知
---
## 九、回滚流程
### 9.1 快速回滚
```bash
# 回滚到上一个版本
docker service rollback trans-hub_post_bank_point_mall
# 或者指定版本
docker service update \
--image harbor.dev.cdlsxd.cn/common/post_bank_point_mall:v1.0.0 \
trans-hub_post_bank_point_mall
```
### 9.2 配置回滚
```bash
# 恢复配置文件
scp configs/config-backup.yaml \
root@172.29.104.45:/data/nfs/trans-hub/post_bank_point_mall/config/config.yaml
# 重启服务
docker service update --force trans-hub_post_bank_point_mall
```
---
## 十、联系支持
遇到问题时:
1. 查看日志:`docker service logs trans-hub_post_bank_point_mall`
2. 检查配置:确认配置文件正确
3. 联系运维团队

1
devops Submodule

@ -0,0 +1 @@
Subproject commit 8016927b9ddb29b2efab3a8ba1d6fc419236417a

@ -1 +1 @@
Subproject commit ec4933005c29aa6f647e7729d5bba8a03a066563
Subproject commit ce4850724c2a3d9685488f6bfaf3fdd05cf6ae1f