升级前(通用)
- 确认 License 维护期有效(maintenanceExpiresAt),方可获取新版本安装包;过期需续费后由厂商重签
- 下载与现网一致的架构包(amd64 或 arm64 / aarch64)
- 保留 License 文件、域名与对外端口约定
先确认现网是哪种部署
Linux 生产 / 腾讯云等服务器默认是 K8s(或 K3s);Mac 演示 / 显式指定 compose 才是 Docker Compose。安装包里只有 .env.template、没有 .env,通常说明当初走的是 K8s,不必也不该去「造」一个 .env。
K8s / K3s
kubectl get ns vod-private Docker Compose
docker compose ls # 或 ls 旧目录 docker-compose/.env 路径 A:K8s / K3s(Linux 生产常见)
密码与凭证在集群 Secret 中(如 mysql-credentials、minio-credentials),不依赖 docker-compose/.env。
- 解压新版本安装包,进入其中的 private-deploy 目录
- 确认本机 kubectl 能访问现网集群(K3s 通常需正确的 KUBECONFIG)
- 直接执行升级脚本(默认会先备份)
./scripts/upgrade.sh - 验收:管理后台上传 → 编码 → 播放
不要从 .env.template 复制出新的 .env 再升级——会生成新随机密码,与库中已有数据对不上。若安装时用过 LoadBalancer(可直接访问 http://IP/),升级请带 VOD_EXPOSE_MODE=loadbalancer,或升级后执行:VOD_EXPOSE_MODE=loadbalancer ./scripts/apply-expose-services.sh
路径 B:Docker Compose(Mac 演示 / 显式 compose)
Compose 路径才会生成 docker-compose/.env(含数据库与 MinIO 密码)。新包目录里默认只有 .env.template,必须从旧安装目录拷贝真实的 .env。
- 解压新版本安装包,进入其中的 private-deploy 目录
- 将旧版 docker-compose/.env 复制到新包同路径
缺 .env 时脚本会失败(避免误用默认 IMAGE_TAG=0.1.0 去 pull)。拷贝示例:
cp /path/to/old/private-deploy/docker-compose/.env ./docker-compose/.env - 确认 license.json 与 license.sig 在 private-deploy 目录(或按现网挂载方式保留)
- 执行升级脚本(默认会先备份)
./scripts/upgrade.sh - 验收:管理后台上传 → 编码 → 播放
脚本会做什么
- 升级前备份(可用 --skip-backup 跳过,不推荐)
- 加载安装包内业务镜像(K8s 会导入到可调度节点)
- 应用新版本 manifests,或 docker compose up
- 执行增量 SQL(upgrade-db.sh),不会用 dump 覆盖库
- 滚动重启 / 重建业务组件
升级后验收
建议跑冒烟验收(可选):
./scripts/e2e-acceptance.sh --smoke-only 仅更新 License
买断永久使用;续费更新的是维护期。只需替换验签文件时:
./scripts/update-license.sh --license ./license.json --sig ./license.sig 注意
- 禁止用新版本全量 schema dump 覆盖客户库
- 维护期过期不阻断已部署系统继续运行;获取新包与升级支持需在维护期内
- 架构必须与现网一致;选错包会导致镜像无法启动
- 备份目录请纳入客户备份策略;未安装 mc 时可能跳过 MinIO 对象备份(仅警告)