如何把 WeKan Docker 安装连同数据整体迁移到另一台服务器?
【免费下载链接】wekanThe Open Source kanban, built with Meteor. GitHub issues/PRs are only for FLOSS Developers, not for support, support is at https://wekan.fi/commercial-support/ . PR source translation to imports/i18n/data/en.i18n.json, other translations at https://app.transifex.com/wekan/wekan项目地址: https://gitcode.com/GitHub_Trending/we/wekan
如果你在一台服务器上用 Docker 运行 WeKan,现在要把整套 WeKan——镜像、容器和其中的数据——原样搬到另一台服务器,WeKan 文档里有两条真实给出的路径。主路径是整体迁移:把旧服务器的整个 Docker 数据目录/var/lib/docker打包拷到新服务器并解压,容器和数据一次搬完,来自 Move-Docker-containers-to-other-computer.md。替代路径是用 mongodump/mongorestore 只迁移数据库,来自 Backup.md 的 Docker 章节。本文先给主路径,替代路径在文末。
准备条件
- 旧服务器:WeKan 当前以 Docker 方式运行(文档以
docker compose up -d启动为基准);有 sudo/root 权限,因为流程要操作 Docker 守护进程和/var/lib目录;知道 docker-compose.yml 所在目录(文档示例中是repos/wekan)。 - 新服务器:已经安装 Docker。文档的原话是"另一台也安装了 Docker 的计算机(笔记本、服务器等)"。
- 影响范围要清楚:主路径打包的是旧服务器上全部Docker 数据,不只 WeKan;新服务器上原有的 Docker 数据也会被整体替换。
在旧服务器上停止并打包
文档给出的命令(在旧服务器上执行):
ssh ubuntu@oldserver.com cd repos/wekan sudo su docker-compose stop systemctl stop docker cd /var/lib tar cvpzf docker.tar.gz docker systemctl start docker scp docker.tar.gz root@newserver.com:/var/lib/ exit exit逐步说明:
docker-compose stop:先停掉 WeKan 容器。systemctl stop docker:停止 Docker 守护进程,旧服务器上所有其他容器会随之停止;打完包后文档用systemctl start docker把守护进程恢复。tar cvpzf docker.tar.gz docker:在/var/lib下把整个docker数据目录压成docker.tar.gz。数据量多大,这个包就多大。scp ...:/var/lib/:把压缩包以 root 身份传到新服务器的/var/lib/。- 命令里的
ubuntu@oldserver.com、root@newserver.com、repos/wekan是文档示例值,替换成你自己的服务器地址、登录用户和 WeKan compose 目录;开头的ssh与结尾的两个exit只是示例的进出会话,已经登录到服务器上时可以直接执行中间部分。
在新服务器上解压还原
ssh ubuntu@newserver.com sudo su systemctl stop docker cd /var/lib mv docker old-docker tar xpvzf docker.tar.gz systemctl start docker exit exit注意这一步的副作用:mv docker old-docker会把新服务器自己原有的Docker 数据整个挪到/var/lib/old-docker,然后解压旧服务器的数据覆盖上去。文档标题就写明这是"replacing all of docker on new server"——新服务器之前的镜像和容器会被旧服务器的替换。原数据保留在/var/lib/old-docker里没有删除。整个流程结束后,文档以systemctl start docker收尾。
迁移后如何检查
- 用
docker ps查看容器列表。下面是 Export-Docker-Mongo-Data.md 中给出的文档示例输出(容器 ID 各环境不同):
docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1234wekanid wekanteam/wekan:latest "/bin/sh -c 'bash $ME" About an hour ago Up 46 minutes 0.0.0.0:8080->80/tcp wekan-app 4321mongoid mongo "/entrypoint.sh mongo" About an hour ago Up 46 minutes 27017/tcp wekan-db- 打开看板检查数据。文档(Backup.md 的 Docker 章节)给出的判断方法是:打开看板后,如果卡片或附件不可见,点右侧边栏 / Board Settings / Migrations,运行其中的大部分迁移,但不要运行
Restore all from archive这一项,因为它会把归档中的卡片等恢复出来。 - 如果恢复的是 MongoDB 数据而 WeKan 看起来是空的,检查 start-wekan.sh 或 docker-compose.yml 里的 MongoDB 数据库名(admin、wekan 等)是否正确,文档说明配置不对时数据库会是空的。
- Move-Docker-containers-to-other-computer.md 自己标注了"This page is work in progress, and needs more details",上文就是它目前给出的全部步骤。
替代路径:用 mongodump / mongorestore 只迁移数据库
如果新服务器会重新装 WeKan Docker,只需要把数据库搬过去,用 Backup.md 的 Docker 章节。它假设 WeKan 当前以docker compose up -d运行。
旧服务器做备份:
docker stop wekan-app docker exec wekan-db rm -rf /data/dump docker exec wekan-db mongodump -o /data/dump docker cp wekan-db:/data/dump . docker start wekan-app然后按文档说明,把 dump 目录拷到另一台服务器或你的备份处。
新服务器做恢复:
docker stop wekan-app docker exec wekan-db rm -rf /data/dump docker cp dump wekan-db:/data/ docker exec wekan-db mongorestore --drop --dir=/data/dump docker start wekan-app这条路径的约束:
- 只在 WeKan 停止时做 mongodump/mongorestore(Docker 对应
wekan-app容器)。 - 不要执行
docker compose down,文档明确警告它可能删除数据。 - MongoDB 容器名不一定是
wekan-db,要从 Dockerfile 或 docker-compose.yml 里确认,也可能是mongodb或其他名字。 - 这套命令针对 MongoDB 部署,即 docker-compose-mongodb-v7.yml。Docker 文档 README 说明:仓库默认的 docker-compose.yml 现在用的是 FerretDB v1 内嵌 SQLite,没有独立的 wekan-db 容器,文中较旧的说明(如 mongodump 流程)对应 MongoDB 部署。
- 恢复后如果卡片或附件不可见,同样用 Board Settings / Migrations 检查,且跳过
Restore all from archive。
限制
- 整体迁移会替换新服务器上的全部 Docker 数据,原数据保留在
/var/lib/old-docker。 - 整体打包包含旧服务器上的所有容器和镜像,不只是 WeKan。
- mongodump/mongorestore 路径不适用于默认 FerretDB v1 compose 文件(无独立 MongoDB 容器),它属于 MongoDB 部署的迁移方式。
- 整体迁移文档标注为 work in progress,目前未给出解压后启动容器与更细验证的扩展步骤。
【免费下载链接】wekanThe Open Source kanban, built with Meteor. GitHub issues/PRs are only for FLOSS Developers, not for support, support is at https://wekan.fi/commercial-support/ . PR source translation to imports/i18n/data/en.i18n.json, other translations at https://app.transifex.com/wekan/wekan项目地址: https://gitcode.com/GitHub_Trending/we/wekan
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考