go-cqhttp 在 Docker 里早就部署好了,由于没有搭建 qsign 签名服务器,所以迟迟不敢上线。今天终于搞定了在 Docker 下安装 qsign 签名服务器了。这次用的docker市场里找到的镜像,下次找时间制作一个自己的镜像。
1 拉取和运行镜像:xzhouqd/qsign:8.9.63
docker run -d --restart=always --name qsign -p 8080:8080 -e ANDROID_ID=xxxxxxx xzhouqd/qsign:8.9.63
只需要这一条命令,整个 qsign 服务器就运行起来了。参数说明:
- -d 后台运行
- –restart=always 服务自动重启
- –name asign 给容器取的名字叫做:qsign
- -p 8080:8080 端口映射,可以通过宿主机的 8080 端口访问容器内部的 8080 端口
- e ANDROID_ID=xxxxxxxx 环境变量,将ANDROID_ID 参数传递给容器
- xzhouqd/qsign:8.9.63 安装用到的镜像,自动从dockerhub里拉取
2 在宿主机或局域网内连接 qsign 服务器
如果你的宿主机上(不是在 docker 里)正好运行了一个 go-cqhttp 服务,将该服务的配置文件修改后,即可连接并使用该签名服务器。修改如下:
-
config.yml
将 sign-servers 里主签名服务器地址填为:127.0.0.1:8080,即可
-
device.json
3 在宿主机里其他容器上连接 qsign 服务器
容器之间相互调用,就可以用 docker-compose 脚本来实现,将两个容器编排在一个文件里,以虚拟网络link的方式即可实现容器之间进行网络互访。
编辑 docker-compos.yml 文件,内容如下:
version: "3.5" # 使用版本 3.5services: # 服务列表cqhttp: # go-cqhttp 服务container_name: cqhttp # 指定容器名称image: go-cqhttp-alpine:0.0.1 # 使用的镜像名称networks: # 本容器加入的网络,可以是多个- my_networklinks: # 连接到其他的容器的列表,此处表示 cqhttp 容器会放翁 qsign 容器- qsignqsign: # qsign 服务container_name: qsign # 指定容器名称image: xzhouqd/qsign:8.9.63 # 使用的镜像名称ports: # 镜像端口列表- 8080:8080environment: # 环境变量,会传递到容器里ANDROID_ID: xxxxxx # 填入你想使用的ID,可以是昵称、手机号啥的,都可以networks: # 本容器加入的网络,可以是多个- my_network
networks:my_network:name: my_network
4 应用效果
5 扩展
4.1 go-cqhttp 和 qsign 是分开还是合在一个docker里
4.2 将dockerhub里的镜像存储到本地
以便以后加载使用,避免出现上传用户删除镜像导致以后找不到该镜像的情况
参考文章(致谢)
Linux服务器下 签名服务器+Mirai部署 详细教程
使用qsign解决gocq启动code45报错 - 知乎