Yapi docker 数据卷的迁移

一、前提条件:

之前聊到,在ubuntu虚拟机上面安装了Yapi和MongoDB容器,运行Yapi程序。现在要将其迁移到另一台服务器上,保留所有数据。

参考了以下两位同学的博客,万分感谢:
1. 卷的基本操作中讲到如何运行一个容器并且加载某个已经存在的卷 https://www.cnblogs.com/yjlch1016/p/9033078.html

2. 博客 https://blog.csdn.net/s78365126/article/details/88065144 教你 如何打包卷和恢复卷

第一步:在服务器2上安装Docker。在此不做多的描述了。

第二步:在服务器1上,打包数据卷:

$ docker run -i -t --volumes-from mongo-yapi -v $(pwd):/backup mongo tar cvf /backup/backupdata.tar /data/db

参数解释:

volumes -from mongo-yapi:表示要用mongo-yapi这个容器的数据卷。

$(pwd):获取当前目录路径

backup:执行备份指令

tar /backup/backupdata.tar /data/db : 打包容器内需要保留的数据目录到backupdata.tar 文件。

打包完成了,看到目标文件乖巧的躺在那里。(ls -a 命令)

 第三步:将tar文件传输到新服务器上。此处不演示。

第四步:创建临时容器,用空目录映射到之前要保留的数据目录下。

$ docker run -itd -v /data/db --name data1 mongo /bin/bash

 第五步:创建临时容器恢复数据卷到刚刚创建的新容器data1中。这个刷屏了。所以只留了部分截图。--rm  属性会在执行完后立即删除该容器

$ docker run --rm --volumes-from data1 -v $(pwd):/backup mongo tar xvf /backup/backupdata.tar

 第六步:查看都有哪些数据卷存在,并且可用

$ docker volume list

 查看卷的基本信息。这俩个卷,后创建的那个是我们要用到的。xxxxxxxxxxxxxxxx是容器ID,我就这么写了。

$ docker volume inspect xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 第七步:运行一个mongo容器,使用已经被恢复的卷。xxxxxxxxxxxxxxxx是容器ID。

$ docker run -d --name mongo-yapi -v xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:/data/db mongo

 第八步:加载Yapi镜像:

$ docker pull registry.cn-hangzhou.aliyuncs.com/anoy/yapi

 第九步:初始化, 这个时候如果不出意外的话应该有一个报错:管理员账号初始化失败。这个不用管。因为数据库中原有管理员账号,所以报这个错是正常的。

docker run -it --rm 
--link mongo-yapi:mongo 
--entrypoint npm 
--workdir /api/vendors 
registry.cn-hangzhou.aliyuncs.com/anoy/yapi 
run install-server

 第十步:启动Yapi服务。

docker run -d 
--name yapi 
--link mongo-yapi:mongo 
--workdir /api/vendors 
-p 3000:3000 
registry.cn-hangzhou.aliyuncs.com/anoy/yapi 
server/app.js

 第十一步:在浏览器中打开:http://192.168.23.133:3000,进入系统。能够看到,直接打开了迁移之前的数据,完完整整。

原文地址:https://www.cnblogs.com/testertry/p/11934418.html