使用文档
私有部署

服务升级、备份与回退

先保存可恢复的副本,再更新容器或 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-xl

PowerShell

docker stop password-xl-service
Copy-Item -LiteralPath 'D:\password-xl-data' -Destination 'E:\Backups\password-xl-before-upgrade' -Recurse

CMD

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 pulldocker compose up -d

验证启动日志、登录、主密码解锁、记录数量、标签和抽样字段。确认新建测试记录在重启后仍然存在。通过验证后再清理旧容器,不急于删除旧镜像和备份

回退

  1. 停止新容器,另存当前目录,避免覆盖升级后的新增记录
  2. 把升级前备份恢复到单独目录,核对内容与权限
  3. 使用原镜像摘要或保存的旧镜像启动,挂载恢复出的目录
  4. 使用旧服务密码和原主密码验证

不要让新旧容器同时写同一目录。旧版本可能无法读取新版本写入的格式,因此回退应同时考虑程序和数据

Jar 的对应流程

停止 Java 进程,备份完整 --work-path 目录,保留旧 Jar。新 Jar 使用原工作目录参数启动;失败时停止,恢复旧 Jar 与升级前目录。不要只替换程序后忽略参数变化