Docker 升级与备份
在同一主机更新镜像不需要重新购买,前提是继续使用原 Compose 项目名、数据卷、密钥卷和主机身份挂载。容器可以重建;删除数据卷会丢失应用状态,删除密钥卷会导致加密数据库无法恢复。换 NAS 的授权迁移与找回功能后续提供。
以下命令使用官网下载的 compose.quick.yaml。如果你部署时使用其他文件,所有命令都应使用原来的 -f 参数和项目名。
备份
暂停服务后,分别备份整个 /data 和 /run/drama-secrets,避免漏掉 SQLite WAL 文件或密钥。以下示例的 drama-backup 应为本次备份的新目录,不要覆盖旧备份:
sh
umask 077
mkdir -p ./drama-backup/data ./drama-backup/keys
docker compose -f compose.quick.yaml stop drama
docker compose -f compose.quick.yaml cp drama:/data/. ./drama-backup/data
docker compose -f compose.quick.yaml cp drama:/run/drama-secrets/. ./drama-backup/keys
docker compose -f compose.quick.yaml start drama确认两份副本均完整后再继续升级。数据副本包含账号哈希、会话和授权凭证,密钥副本可用于解密数据库;应分开受控保管,不要上传到公开仓库或发给他人。备份不能替代跨设备授权迁移。
升级
记录当前镜像版本和摘要、制作完整备份,再将原 YAML 的 image 改为已发布的对应架构标签。使用 .env 的部署则修改 DRAMA_VERSION,保留 -amd64 或 -arm64 后缀:
sh
docker compose -f compose.quick.yaml pull
docker compose -f compose.quick.yaml up -d
docker compose -f compose.quick.yaml ps
docker compose -f compose.quick.yaml logs --tail=80 drama检查网页版本、管理员登录、媒体库、原观看记录和授权状态,并实际播放一集。保持相同的数据卷名称,不运行 docker compose down -v。使用离线镜像时,先载入匹配架构和标签的归档,跳过 pull。
恢复
在原主机恢复时先停止服务,使用与备份兼容的镜像,将完整数据及对应密钥分别恢复到目标数据卷、密钥卷,保留主机身份挂载,并确保配置的运行 UID/GID 可读写。备份原件保持只读,确认数据库可打开后再启动验证;不要让两个容器同时写入同一组卷。
升级后如果已有新的购买或观看记录,不能直接用升级前的备份覆盖当前数据。先备份当前状态并核对新增订单,避免丢失新交易的领取凭证。镜像回退与数据回退是两件事。