Docker 数据迁移
本指南将帮助你将旧 Docker 上运行的 PagePlug 实例迁移到新 Docker上。
假设您当前的 PagePlug 实例位于文件夹~/pageplug-old
中,并且您希望新设置位于~/pageplug-new
。(这只是示例文件夹名称,请使用您喜欢的名称。)
首先,我们可以看到如下的老版文件夹结构~/pageplug-old
:
然后,在迁移步骤完成后的新版文件夹~/pageplug-new
结构如下:
接下来,让我们开始其中所需要执行的步骤!
1. 关闭旧的 PagePlug 实例
注意!您在继续之前请了解以下几项事项:
整个迁移过程应该在 25-30 分钟内完成,通常少于这个时间。
当前登录的所有用户都将被注销。一旦新实例启动并运行良好,他们就可以重新登录。
根据您的配置,以下任何
docker-compose
命令docker
可能需要sudo
在开始时使用 a 运行。请检查命令的输出以查看是否有任何错误,在运行命令之后以及继续执行下一步之前。
让我们首先定义几个在迁移过程中有用的变量。请使用适当的路径代替~/pageplug-old
和~/pageplug-new
。
在我们开始迁移之前,请使用以下命令停止旧服务器:
2. 导出数据库
要从正在运行的MongoDB
数据库中导出数据,我们使用mongodump
命令,它将创建一个gzip
包含所有数据的存档。然后,此文件将被复制到新设置并导入。
创建备份文件夹以存储转储文件:
转储 MongoDB 数据并压缩成 gzip 文件:
3. 迁移配置
新设置使用单个docker.env
文件进行所有环境变量配置。
让我们创建所需的文件夹结构:
从旧位置迁移配置:
现在,请检查如下文件 "$new_path"/stacks/configuration/docker.env
:
在默认情况(没有使用外部的
MongoDB
数据库),修改APPSMITH_MONGODB_URI
,把
@mongo
修改为@localhost
, 然后删除查询参数(?以后的所有内容)。举例,当前值为mongodb://root:rootpass@mongo/appsmith?retryWrites=true&authSource=admin
, 将其改为mongodb://root:rootpass@localhost/appsmith
.在默认情况下(没有使用外部 Redis 实例)在
APPSMITH_REDIS_URL
中更改redis://redis:6379
为redis://localhost:6379
. 即把主机从redis
更改为localhost.
在这个docker.env
文件的最后,让我们添加以下新的环境变量:
在 <Your MongoDB User>
和 <Your MongoDB Password>
, 这里,请使用与APPSMITH_MONGODB_URI
上面相同的用户名和密码。在上面的示例值中,用户是root
,密码是rootpass
。
4. 导出 https 配置和证书(可选)
如果你没有将自定义域与 pageplug 实例一起使用,请跳过此步骤。
如果您的docker.env
中尚未配置APPSMITH_CUSTOM_DOMAIN
,请添加如下行
还可以通过运行以下命令将证书移动到新容器:
5. 使用 Fat 容器设置新的 Appsmith
现在,让我们将旧的实例全部关闭:
按照官方指南在 Docker Compose Configuration 部署新的 PagePlug:
请注意,你必须在 "$new_path"
文件夹中创建一个新的docker-compose.yml
,就像上面的 curl
命令一样,不要从"$old_path"
中复制它。
6. 导入数据库
新部署启动后(通常需要大约30秒),我们将导入从旧实例导出的数据:
创建文件夹以复制存档文件:
复制存档文件:
从此存档导入数据:
请注意,你将看到一个提问:Importing this DB will erase this data. Are you sure you want to proceed
,这是提示你导入此数据库将删除此数据,这是你选择y
是安全的,因为新设置中的新数据库仅包含初始数据,是可以被安全的覆盖的。
成功后,我们就可以启动我们的新实例了!
7. 验证迁移
导航到你的 pageplug 实例,无论是使用 IP 地址还是自定义域,并验证你的 pageplug 实例是否正常工作,并且你的所有数据都完好无损。
Last updated