Skip to content

系统更新

本文档介绍如何安全地更新 MISEB 系统到最新版本。

更新脚本

系统提供了一键更新脚本 upgrade.sh,可以安全地更新容器镜像而不影响业务数据。

使用方法

bash
# 进入部署目录
cd /path/to/deploy

# 执行更新脚本
./upgrade.sh

更新流程

脚本会自动执行以下步骤:

1.23. 登录镜像仓库 - 连接到 cdiwit-registry.cn-hangzhou.cr.aliyuncs.com 2. 拉取最新镜像 - 下载 admin、front、nginx 的最新版本 3. 停止旧容器 - 安全停止当前运行的容器 4. 启动新容器 - 使用新镜像启动服务 5. 清理旧镜像 - 可选择清理未使用的旧镜像释放空间

执行示例

bash
$ ./upgrade.sh
==========================================
  MISEB多商户电商管理系统 - 镜像更新
  版本: 1.0.0
==========================================

[信息] 当前运行的镜像:
CONTAINER          REPOSITORY                                TAG
miseb-admin        cdiwit-registry.cn-hangzhou.cr.aliyuncs.com/miseb-multi-mer/admin   1.0.0
miseb-front        cdiwit-registry.cn-hangzhou.cr.aliyuncs.com/miseb-multi-mer/front   1.0.0
miseb-nginx        cdiwit-registry.cn-hangzhou.cr.aliyuncs.com/miseb-multi-mer/nginx   1.0.0

是否继续更新镜像? (y/n): y

[步骤 1/5] 登录Docker仓库...
Login Succeeded

[步骤 2/5] 拉取最新镜像...
Pulling miseb-admin  ... done
Pulling miseb-front  ... done
Pulling nginx        ... done
[完成] 镜像拉取成功

[步骤 3/5] 停止旧容器...
[完成] 旧容器已停止

[步骤 4/5] 启动新容器...
[完成] 新容器已启动

[步骤 5/5] 清理旧镜像...
是否清理未使用的旧镜像以释放空间? (y/n): y
[完成] 旧镜像已清理

==========================================
  更新完成!
==========================================

注意事项

更新前准备

重要提示

在执行更新前,请确保已做好以下准备工作。

  1. 备份数据库

    bash
    # 备份MySQL数据库
    docker exec miseb-mysql mysqldump -uroot -p'密码' miseb > backup_$(date +%Y%m%d_%H%M%S).sql
  2. 备份配置文件

    bash
    # 备份.env配置
    cp .env .env.backup
  3. 选择低峰期更新

    • 建议在业务低峰期(如凌晨)执行更新
    • 更新过程中服务会短暂中断(约1-2分钟)
  4. 检查磁盘空间

    bash
    # 确保有足够空间下载新镜像
    df -h

更新中注意

  1. 不要强制中断

    • 更新过程中请勿使用 Ctrl+C 强制中断
    • 如果必须中断,请在完成当前步骤后再中断
  2. 网络稳定性

    • 确保服务器网络稳定
    • 镜像下载可能需要几分钟时间
  3. 观察日志

    • 更新完成后建议观察服务日志确认正常
    bash
    docker compose logs -f --tail 100

更新后检查

  1. 验证服务状态

    bash
    docker compose ps
  2. 检查健康状态

    bash
    # 检查Admin服务
    curl -s http://localhost:8080/actuator/health
    
    # 检查Front服务
    curl -s http://localhost:8081/actuator/health
  3. 访问测试

手动更新

如果需要手动更新或更新脚本出现问题,可以手动执行以下命令:

bash
# 1. 登录镜像仓库
# 注意:镜像仓库密码为临时凭证,请向客服或软件提供商获取最新密码
docker login cdiwit-registry.cn-hangzhou.cr.aliyuncs.com --username cr_temp_user --password <请向客服或软件提供商索取最新密>

# 2. 拉取最新镜像
docker compose pull

# 3. 停止并重建容器
docker compose down
docker compose up -d

# 4. 查看服务状态
docker compose ps

# 5. 可选:清理旧镜像
docker image prune -f

指定版本更新

如果需要更新到指定版本而非最新版本:

bash
# 1. 修改 .env 文件中的版本号
vim .env
# 修改 IMAGE_TAG=1.0.1

# 2. 拉取指定版本
docker compose pull

# 3. 重建容器
docker compose up -d --force-recreate

回滚到旧版本

如果更新后出现问题,需要回滚到旧版本:

bash
# 1. 停止当前容器
docker compose down

# 2. 修改 .env 中的版本号为旧版本
vim .env
# 修改 IMAGE_TAG=1.0.0

# 3. 拉取旧版本镜像
docker compose pull

# 4. 启动服务
docker compose up -d

# 5. 如果旧版本镜像已被删除,联系管理员获取

常见问题

更新后服务无法启动

  1. 检查日志排查原因:

    bash
    docker compose logs miseb-admin
  2. 检查配置文件是否与新版本兼容

  3. 尝试回滚到旧版本

镜像拉取失败

  1. 检查网络连接
  2. 检查Docker仓库登录状态:
    bash
    docker login cdiwit-registry.cn-hangzhou.cr.aliyuncs.com
  3. 检查磁盘空间

数据库迁移失败

  1. 查看详细错误日志:

    bash
    docker logs miseb-admin 2>&1 | grep -i "flyway\|migration"
  2. 如果是版本冲突,可能需要手动处理迁移脚本

自动更新

警告

不建议在生产环境启用自动更新,可能导致意外停机。

如果确实需要自动更新,可以配置定时任务:

bash
# 编辑crontab
crontab -e

# 每周日凌晨3点自动更新(不推荐生产环境使用)
0 3 * * 0 cd /path/to/deploy && ./upgrade.sh < /dev/null

下一步

成都艾唯特软件有限公司