Docker 应用迁移到新 VPS,要带走哪些数据?
Compose 文件之外,还要迁移数据库、附件和密钥。先恢复新机并测试读写,最后切域名、处理旧订单。
复制 compose.yaml 到新 VPS,数据库和上传文件不会跟着过去。迁移前先找出每项数据的存放位置,再分别备份部署配置、数据库和附件。
列出要恢复的东西
保留 Compose 文件、环境配置、应用密钥、绑定目录与命名卷信息,另外记录镜像版本。数据库、上传文件和附件通常需要分别保存;有些程序还把账号或配置放在 SQLite 文件中,不能漏掉。
| 内容 | 核对位置 | 恢复后检查 |
|---|---|---|
| 部署配置 | Compose、环境变量和密钥文件 | 镜像、端口与连接地址 |
| 数据库 | 专用数据库或应用本地文件 | 账号、业务记录与权限 |
| 附件 | 数据卷或绑定目录 | 图片、下载与写入权限 |
| 域名入口 | 代理、DNS 和外部白名单 | HTTPS 与回调 |
先按实际数据存放方式选恢复方法,再回到对应教程执行命令。下面几篇使用的版本、数据库和数据目录不同,不能把一个应用的备份命令直接套给另一个。
| 要迁移的应用 | 除部署配置外,要带走什么 | 新副本先检查什么 |
|---|---|---|
| Vaultwarden 密码库 | 对应教程采用 SQLite,需保存数据库、附件、密钥和完整数据目录 | 原账号与记录、附件下载、新写入;真实客户端解密与同步还要另外核对 |
| Miniflux 阅读器 | PostgreSQL 数据库;连接配置另存,目标实例先建好业务角色 | 原订阅、历史文章、已读和收藏;只有 OPML 不能保留这些状态 |
| Forgejo 私有 Git | 对应教程采用 SQLite,需保存整份应用数据,包含仓库、数据库、附件、配置和持久任务状态 | 普通账号读取私库、原提交和附件、新 push 后重新 clone;只 clone 不等于服务备份 |
| Paperless 文档库 | 同版完整文档导出及部署配置、语言文件和凭据 | 原件下载、中文检索、普通账号权限与新文件入库;导入后的时间字段和 API 令牌另按教程核对 |
| Beszel 资源监控 | Hub 整份数据目录、密钥与 Agent 的配置、Token 和持久身份目录 | 原系统以原身份重新连接、旧主机与容器历史,以及恢复后的新采样;同版本恢复先隔开正式 Agent 和通知出口 |
这些教程里的同版本恢复结果,不能代替跨版本升级验证。先让恢复副本使用独立目录、数据卷和入口,避免接收正式写入或向外发送邮件、通知、webhook;保留原实例,等读写与入口检查完成后再安排切换。
数据库和附件要对应同一时间
数据库使用对应工具导出或按官方说明备份,不把运行中的数据目录随便打包当成一致副本。需要同时保存数据库与附件的应用,按软件支持的方式暂停写入或建立一致的备份时间点。
同一台旧机保存的备份,在机器不可用时可能也取不到。迁移包放到独立位置,限制权限;包含密码的环境文件和数据库导出不要上传到公开仓库。
新机器先恢复数据,再开放访问
按应用文档恢复数据库及文件,确认目录权限和镜像版本。先在新机器检查配置:
docker compose config
docker compose up -d
docker compose ps
docker compose logs --tail=100
docker compose config 输出可能含环境变量的值,不把完整输出公开分享。容器运行后检查实际数据库连接,登录一次,读取旧文件并新上传一个文件,确认数据能继续写入。
最后切域名,旧机留到检查完成
应用和 HTTPS 正常后再切换 DNS,协调最后一次数据同步与业务停写。新旧站同时写入各自数据库,会形成两份不同的数据;商城、笔记或文件应用都不能只靠 DNS 切换避免这个问题。
公网检查完成后,保留可回退的镜像、配置与备份,按计划处理旧机。恢复后数据条数、附件和关键业务操作都应检查,容器健康状态不能代替这些结果。
新机器要装得下数据和恢复副本
迁移目标需要支持镜像架构,并容纳数据、恢复文件和临时空间。参考Docker VPS 的资源清单选好配置后,先在新环境完成数据库、附件与入口验证,再协调最后一次写入。确认备份能恢复之后,才结束旧资源的账期。
把所有容器的内存、镜像架构、现有数据和恢复临时空间一起算,再买短周期套餐试恢复。需要复制测试环境时,可查看 Evoxt 的实例与克隆选项,核对当前套餐权限;需要云盘组合与扩容规划时,可比较 ECS 的计算与存储方案。旧机保留到读写和备份验证完成,平台副本不能代替应用的一致性备份。




