记录一次酷Q机器人在Docker上部署过程(nonebot on docker)

docker运行酷Q
在Docker上部署酷Q,官方有教程,我在本地部署,一切正常

我用Python写的插件,会用coolhttp这个插件

其原理是通过,Python 使用http协议与这个插件coolqhttp插件交互,插件再与酷Q交互。

所以会填写接口地址。

安装Docker

如果你使用的宝塔面板,可以在软件商店,快速安装

或者参考这篇文章,复制指令在终端安装
https://cqp.cc/t/34558

运行酷Q镜像

docker run --name=coolq --rm -p 8080:9000 -v /root/coolq-data:/home/user/coolq -e VNC_PASSWD=12345678 -e COOLQ_ACCOUNT=123456 coolq/wine-coolq

参数解析

参数参数示例
远程监听端口8080
数据存放位置/root/coolq-data
远程访问密码12345678
机器人账号123456

-p 8080:9000 这个的意思就是,访问主机的8080端口,实际访问的是docker容器的9000端口

--rm 如果带这个参数运行,那么本次运行结束,就会删除这个docker

http://你的服务器IP:你的端口 就可以访问远程操作界面

值得注意的是,在本地这个地址当然就是http://127.0.0.1:端口

我实际在服务器测试的时候,我电脑去连接外网服务器,连不上去。

所以,如果是要部署在服务器上,还有稍加修改上述运行参数

docker run --name=coolq --net="host" --rm -p 8080:9000 -v /root/coolq-data:/home/user/coolq -e VNC_PASSWD=12345678 -e COOLQ_ACCOUNT=123456 coolq/wine-coolq

增加了--net="host"

注意:
如果加入 --net="host"参数,按上面的例子,访问的地址就为http://服务器IP:9000

外网直接访问9000端口,就可以访问远程面板了。

更多docker运行参数可以参考此文
https://www.cnblogs.com/pbblogs/p/9766738.html

安装coolqhttp插件

在上面的运行容器时,这里指定的数据存放地址是/root/coolq-data
无图片描述

这个文件目录是不是很熟悉,就是和Windows 酷Q目录一模一样的

所以我们将所需要的插件上传到app文件夹下即可

在启动容器时创建的数据目录存放着 酷Q 的所有数据,包括插件、日志等。你只需利用 FileZilla 等工具,连接服务器管理即可。
在数据目录以外创建的所有文件,容器重启时可能会丢失。

安装后台服务

运行docker使用的命令,本次结束后,就会被清除,并且指令太长了,只能做测试用

docker run --name=coolq --net="host" -d -p 8080:9000 -v /root/coolq-data:/home/user/coolq -e VNC_PASSWD=12345678 -e COOLQ_ACCOUNT=123456 coolq/wine-coolq

在终端运行上述指令,安装后台服务,如果是本地部署,请删除指令中--net="host"

不出意外,运行之后,只会输出docker容器ID
无图片描述

启动coolq服务

docker start coolq

停止coolq服务

docker stop coolq

查看运行状况

docker logs coolq

配置nonebot

如果你也是Python nonebot这个库,开发机器人插件,可以接着看

将我们做的Python插件上传到服务器就不多说了

主要说下,这个接口的配置

在酷Q启用coolqhttp插件之后

登录终端,在酷Q存储数据的文件夹下/data/app/io.github.richardchien.coolqhttpapi/config/机器人QQ.json

修改这个文件内的参数

"ws_reverse_api_url": "ws://172.17.0.1:8080/ws/api/",
"ws_reverse_event_url": "ws://172.17.0.1:8080/ws/event/",
"ws_reverse_reconnect_on_code_1000": true,

然后配置Python机器人插件的config.py
设置IP和端口

HOST = '172.17.0.1'
PORT = 8080

最后运行Python程序,查看成功通信

添加新评论