私有部署
服务升级、备份与回退
先保存可恢复的副本,再更新容器或 Jar
升级前记录
保存当前版本、镜像摘要、端口映射、环境变量、挂载目录和用户名。latest 是可变化的标签,不能当成稳定的历史版本号
docker inspect password-xl-service --format '{{.Config.Image}}'
docker inspect password-xl-service --format '{{.Image}}'
docker inspect password-xl-service --format '{{json .Mounts}}'将当前镜像保留一个本地回退标签,避免拉取后丢失引用:
docker image tag 旧镜像ID password-xl-service:before-upgrade两层备份
先在客户端导出 JSON 密码备份;再停止服务并复制完整宿主机挂载目录。JSON 包含密码与标签,不能替代 TOML、设置和其他完整目录文件的备份
Linux
docker stop password-xl-service
sudo tar -czf /安全备份目录/password-xl-before-upgrade.tar.gz -C /opt password-xlPowerShell
docker stop password-xl-service
Copy-Item -LiteralPath 'D:\password-xl-data' -Destination 'E:\Backups\password-xl-before-upgrade' -RecurseCMD
docker stop password-xl-service
robocopy D:\password-xl-data E:\Backups\password-xl-before-upgrade /E /COPY:DAT选择独立备份目录,不要复制到原数据目录的子目录。确认目标副本含 TOML 和各用户目录。Robocopy 的退出码 0–7 通常不是复制失败;应阅读摘要中的失败数量
更新容器
docker pull ccr.ccs.tencentyun.com/password-xl/password-xl-service:latest
docker rename password-xl-service password-xl-service-before-upgrade原容器保持停止状态。按 Docker 教程重新创建名为 password-xl-service 的容器,使用相同宿主机数据目录和端口。Compose 用户则在备份后使用 docker compose pull 和 docker compose up -d
验证启动日志、登录、主密码解锁、记录数量、标签和抽样字段。确认新建测试记录在重启后仍然存在。通过验证后再清理旧容器,不急于删除旧镜像和备份
回退
- 停止新容器,另存当前目录,避免覆盖升级后的新增记录
- 把升级前备份恢复到单独目录,核对内容与权限
- 使用原镜像摘要或保存的旧镜像启动,挂载恢复出的目录
- 使用旧服务密码和原主密码验证
不要让新旧容器同时写同一目录。旧版本可能无法读取新版本写入的格式,因此回退应同时考虑程序和数据
Jar 的对应流程
停止 Java 进程,备份完整 --work-path 目录,保留旧 Jar。新 Jar 使用原工作目录参数启动;失败时停止,恢复旧 Jar 与升级前目录。不要只替换程序后忽略参数变化