10 KiB
10 KiB
邮储银行积分商城服务部署步骤
前置条件
- Docker Swarm 集群已搭建
- NFS 服务器已配置(172.29.104.45)
- Harbor 镜像仓库可访问
- Goploy 部署平台已配置
一、准备工作
1.1 创建配置文件
1.1.1 复制配置模板
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:
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 配置目录
# 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 共享访问。
# 从本地上传配置文件到 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 拉取后运行脚本(构建镜像)
#!/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 部署后运行脚本(更新服务)
#!/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命令只能在管理节点执行。
# 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 在管理节点执行部署
# SSH 登录到管理节点
ssh root@你的管理节点 IP
# 验证当前节点是管理节点
docker node ls # 确认 MANAGER STATUS 列有值
# 进入部署目录
cd /root
# 执行部署脚本
bash deploy.sh
4.3 验证部署
# 查看服务状态
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 更新配置文件
# 修改本地配置
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 重启服务(可选)
某些配置需要重启才能生效:
docker service update --force trans-hub_post_bank_point_mall
六、注意事项
6.1 配置安全
⚠️ 敏感信息处理:
- 数据库密码、Redis 密码等敏感信息不要提交到 Git
- 生产环境使用 Docker Secret 管理敏感信息
- 配置文件设置合适的权限:
chmod 600 config.yaml
6.2 端口冲突
⚠️ 检查端口占用:
# 部署前检查端口是否被占用
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 日志查看
# 查看实时日志
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 服务回滚
如果部署失败,回滚到上一个版本:
docker service rollback trans-hub_post_bank_point_mall
6.7 扩容/缩容
# 扩容到 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 健康检查
确保服务健康检查正常:
# 查看健康检查状态
docker service inspect trans-hub_post_bank_point_mall --format='{{.Spec.Healthcheck}}'
七、常见问题
Q1: 服务启动失败
# 查看日志
docker service logs trans-hub_post_bank_point_mall --tail 200
# 常见原因:
# - 配置文件路径错误
# - 数据库连接失败
# - 端口被占用
Q2: NFS 挂载失败
# 检查 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: 镜像拉取失败
# 检查 Harbor 连接
docker login harbor.dev.cdlsxd.cn
# 检查镜像是否存在
docker images | grep post_bank_point_mall
八、监控和告警
8.1 服务监控
# 查看服务状态
watch -n 2 'docker service ls | grep post_bank_point_mall'
# 查看资源使用
docker stats $(docker ps -q | head -5)
8.2 日志收集
建议配置日志收集系统(如 ELK、Loki):
- 实时查看日志
- 日志搜索和过滤
- 告警通知
九、回滚流程
9.1 快速回滚
# 回滚到上一个版本
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 配置回滚
# 恢复配置文件
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
十、联系支持
遇到问题时:
- 查看日志:
docker service logs trans-hub_post_bank_point_mall - 检查配置:确认配置文件正确
- 联系运维团队