Huginn 的 Docker 部署及数据迁移
Huginn 的 Docker 部署及数据迁移
前两天因为要换 vps,其中之前部署的 Huginn 需要迁移到新的 vps。之前也有朋友问过关于 huginn 的数据备份和迁移的问题。这篇文章就讲下整个流程。
在 vps 上安装 huginn,我之前的博客- 《Huginn及环境搭建》 有讲到过 Huginn 的部署过程,过程比较复杂,要安装的东西也比较多,做迁移的时候要重新部署一遍,也比较容易出错。而 Huginn 有提供 docker 镜像,所以这次我们通过 docker 来搭建 Huginn 环境。
安装 docker
我用的 vps 是 Debian,按照官方文档安装 docker,具体流程见这里:https://docs.docker.com/install/linux/docker-ce/debian/。
安装过程不再赘述
拉取 huginn 镜像
首先登录到 vps。
执行 docker search huginn
来搜索所有公开的 huginn 镜像:
上面高亮的就是我们要使用的镜像,拉取下来(默认拉取 lastest ):
1 | docker pull huginn/huginn |
运行 huginn
拉取完 huginn 之后,我们其余的环境配置(比如 mysql 安装等等)都不需要再配置了,镜像里面都有了,所以我们要做的就是直接运行 huginn:
1 | docker run -itd --name huginn -p 3000:3000 huginn/huginn |
-itd
:包括如下 3 个命令:-t
:在新容器内指定一个伪终端或终端。-i
:允许你对容器内的标准输入 (STDIN) 进行交互。-d
:以新的进程在后台运行
--name
:给这个容器取个别名叫huginn
-p
:容器内部的 3000 端口映射到我们 vps 主机的 3000 端口上
执行 docker ps
来查看 huginn 是否有真正运行:
浏览器访问 <vps:ip>:3000
,应该就能看到 huginn 页面了。但是这个时候因为数据还没有迁移,当前的 huginn 数据库是空的。
数据备份
关于 huginn 的备份,官方 wiki 里面给出的方案 是通过 backup gem
来进行备份,huginn 作者 给出了 备份的脚本,具体 backup
的文档参考见:http://backup.github.io/backup/v4/。但是我这次做数据迁移的话,是直接通过 mysqldump
来导出数据库。
登录到 旧的 vps
,然后执行如下命令来备份 mysql 数据:
1 | mysqldump --single-transaction --opt -u huginn -ppassword huginn_production > huginn_backupfile.sql |
注意:以上命令的参数需要替换:
- huginn:mysql 用户名
- password:mysql 密码
- huginn_production:数据库名
执行完成之后,就会生成一个名为 huginn_backupfile.sql
文件,里面就是你 huginn 的所有数据了,包括 用户信息
,scenarios
,agent
,events
,user_credentials
,Services
等等。
恢复数据
备份完之后,就要恢复数据,要恢复数据,得先把数据拷贝到 huginn 容器里面。
首先通过一下命令把文件从 旧的 vps
拷贝到 新的 vps
主机上:
1 | scp huginn_backupfile.sql root@<新 vps ip>:/home/wangjie/huginn_backupfile.sql |
注意,这个时候,文件是在你的 新的 vps
的主机上,你还需要把它拷贝到刚刚我们新建的 huginn 容器中,执行如下命令:
1 | docker cp /home/wangjie/huginn_backupfile.sql huginn: /app/wjhuginn/huginn_backupfile.sql |
在 新的 vps
中对新部署的 huginn
进行 restore 数据,如下:
1 | mysql -u root -ppassword huginn_production < huginn_backupfile.sql |
注意:默认情况下,huginn 镜像中的:
- 数据库名:huginn_production
- 用户:root
- 密码:password
除了以上数据,我们还需要 restore 的是 huginn 中的 .env
文件,里面包含了我们的一些配置信息(比如,email,第三方 service key 等等),用同样的方法把 旧的 vps
中的 .env
拷贝到 新的 vps
,然后覆盖掉即可。
其它配置
修改 DNS Host Record
把你的 ip 地址改成新的 vps 的 ip。
配置 nginx 反向代理:
如下配置,详情可参考 这里:
1 | server { |
本文链接:https://blog.wangjiegulu.com/2018/11/24/huginn_deployment_with_docker_and_data_migration/
版权声明:本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处。