zhenxun_bot icon indicating copy to clipboard operation
zhenxun_bot copied to clipboard

使用docker部署该项目---教程

Open zzcabc opened this issue 2 years ago • 14 comments

首先确保你的系统中存在docker,且系统架构是Amd64位的,可以输入命令uname -a 找到关键字amd64

使用以下命令,运行pg数据库,创建xxx的数据库名

默认用户名是postgres,密码就你输入的

其中本机端口范围1-65535,注意不要使用常用端口

本机地址 写绝对路径,看你将数据库的数据存放在哪

docker run -d \
      --name postgres \
     --restart=always \
      -p 本机端口:5432 \
      -e POSTGRES_PASSWORD=数据库密码 \
      -e PGDATA=/var/lib/postgresql/data/pgdata \
      -v 本机地址/postgresql_data:/var/lib/postgresql/data \
      postgres

使用下面命令启动bot

bot存放路径写好

版本号去dockerhub看看最新的写好

docker run -d \
      --name zhenxun_bot \
     --restart=always \
     --network=host \
      -v bot存放路径:/bot \
      hibikier/zhenxun_bot:版本号

通过下面命令运行gocqhttp

其中本机路径是gocqhttp配置路径

bot存放路径填上面的存放路径

docker run -dit \
      --name gocqhttp \
     --restart=always \
     --network=host \
      -v 本机路径:/data \
      -v bot存放路径:/bot \
      pcrbot/gocqhttp:ffmpeg

配置

启动gocqhttp

先启动gocqhttp,然后使用docker exec -it gocqhttp /bin/bash 或者 docker attach gocqhttp 进入 gocqhttp容器输入3

进不去就使用docker restart gocqhttp

然后就在gocqhttp的本机路径找到config.yml编辑

account: # 账号相关
  uin: qq # QQ账号
  password: '密码' # 密码为空时使用扫码登录
servers:
  # 添加方式,同一连接方式可添加多个,具体配置说明请查看文档
  #- http: # http 通信
  #- ws:   # 正向 Websocket
  #- ws-reverse: # 反向 Websocket
  #- pprof: #性能分析服务器
  # 反向WS设置
  - ws-reverse:
      # 反向WS Universal 地址
      # 注意 设置了此项地址后下面两项将会被忽略
      universal: ws://127.0.0.1:8080/onebot/v11/ws/                                  看好了,是这里

然后使用docker restart gocqhttp重启就可以了,不用管 这里还要进入容器,输入2,然后手机扫码登录,把链接复制到浏览器,然后扫码,在重启容器即可

启动zhenxun_bot

在bot存放路径,下找到.env.dev文件

SUPERUSERS=["管理的QQ号"]

在bot存放路径,下找到configs文件夹然后有个config.py文件

bind: str = "postgresql://postgres:密码@数据库的服务器ip:你设置的pg数据库端口/xxx数据库名" # 数据库连接链接

使用docker restart zhenxun_bot 重启

在configs文件夹,生成了config.yaml,看文档编辑就好了

使用docker restart zhenxun_bot 重启

完成整体启动

zzcabc avatar May 19 '22 04:05 zzcabc

上面的使用了host网络,下面是自定义端口的

依旧gocqhttp和zhenxun_bot在同一台服务器上面 要确定你的自定义端口是什么,我这里已4455端口为例

确定你的端口

docker run -d \
	--name zhenxun_bot \
        --restart=always \
	-v  bot存放路径:/bot \
	-p 4455:4455 \
	hibikier/zhenxun_bot:0.1.5.0

在.env.dev文件,改成如下方式

# 服务器和端口
HOST = 0.0.0.0
PORT = 4455

删除 --networt=host

docker run -dit \
      --name gocqhttp \
     --restart=always \
      -v 本机路径:/data \
      -v bot存放路径:/bot \
      pcrbot/gocqhttp:ffmpeg

然后把下面的改成这个 universal: ws://服务器ip:4455/onebot/v11/ws/

zzcabc avatar May 19 '22 04:05 zzcabc

如果你使用web,在自定义端口记得-p web端口:8081

zzcabc avatar May 19 '22 04:05 zzcabc

之前docker pull 的时候好像不行,我以为docker跑路了

TiAmoJIA avatar May 19 '22 11:05 TiAmoJIA

之前docker pull 的时候好像不行,我以为docker跑路了

不写后面的版本号,默认拉取的是latest,但是dockerhub没有,所以拉取不到

zzcabc avatar May 19 '22 11:05 zzcabc

太感谢了,之前没用过docker,docker run这里一头雾水

BlackLotusAL avatar May 19 '22 15:05 BlackLotusAL

多谢大佬,另外再请教下 我走到docker exec -it gocqhttp /bin/bash那步了,到是直接进入容器了, 但是进入后没东西啊,直接输入3提示command not found,比如gocqhttp的本机路径我写的是/data/gocqhttp 但是进入这个目录后是空的,要如何找到config.yml文件呢?

miaomiao-hy avatar May 25 '22 17:05 miaomiao-hy

多谢大佬,另外再请教下 我走到docker exec -it gocqhttp /bin/bash那步了,到是直接进入容器了, 但是进入后没东西啊,直接输入3提示command not found,比如gocqhttp的本机路径我写的是/data/gocqhttp 但是进入这个目录后是空的,要如何找到config.yml文件呢?

尝试使用docker attach gocqhttp 进入容器

zzcabc avatar May 25 '22 17:05 zzcabc

多谢大,另外输入再请教下我去docker exec -it gocqhttp /bin/bash那一步了,到是直接进入容器了,但是进入后没东西啊,直接3提示command not found,比如gocqhttp的本机路我写的是/data/gocqhttp但是进入这个之后是空的,要如何找到目录config.yml文件呢?

尝试使用docker attach gocqhttp进入容器

非常感谢,可以了,刚输入进去一直没有提示符我还以为是机器卡住了,结果直接输入就行了

miaomiao-hy avatar May 26 '22 05:05 miaomiao-hy

分享一个自用的 docker-compose

version: '3'

services:
    postgres:
        container_name: postgresql
        environment:
            - TZ=Asia/Shanghai
            - POSTGRES_HOST_AUTH_METHOD=trust
            - POSTGRES_DB=db_zhenxun
            - POSTGRES_USER=user
            - POSTGRES_PASSWORD=zhenxun
        ports:
            - 54323:5432
        volumes:
            - './data:/var/lib/postgresql/data'
        image: postgres
    zhenxun_bot:
        container_name: zhenxun_bot
        depends_on:
            - postgres
        volumes:
            - './bot:/bot'
        environment:
            - TZ=Asia/Shanghai
        image: hibikier/zhenxun_bot:latest
        network_mode: "host"
    gocqhttp-docker:
        container_name: gocq
        environment:
            - TZ=Asia/Shanghai
        volumes:
            - './gocq:/data'
            - './bot:/bot:ro'
        image: xzsk2/gocqhttp-docker:latest
        network_mode: "host"

OiCkilL avatar May 27 '22 08:05 OiCkilL

https://github.com/SinKy-Yan/zhenxunbot-docker

SinKy-Yan avatar Jun 04 '22 15:06 SinKy-Yan

分享一个自用的 docker-compose

version: '3'

services:
    postgres:
        container_name: postgresql
        environment:
            - TZ=Asia/Shanghai
            - POSTGRES_HOST_AUTH_METHOD=trust
            - POSTGRES_DB=db_zhenxun
            - POSTGRES_USER=user
            - POSTGRES_PASSWORD=zhenxun
        ports:
            - 54323:5432
        volumes:
            - './data:/var/lib/postgresql/data'
        image: postgres
    zhenxun_bot:
        container_name: zhenxun_bot
        depends_on:
            - postgres
        volumes:
            - './bot:/bot'
        environment:
            - TZ=Asia/Shanghai
        image: hibikier/zhenxun_bot:latest
        network_mode: "host"
    gocqhttp-docker:
        container_name: gocq
        environment:
            - TZ=Asia/Shanghai
        volumes:
            - './gocq:/data'
            - './bot:/bot:ro'
        image: xzsk2/gocqhttp-docker:latest
        network_mode: "host"

gocqhttp首次启动的时候因为没有输入3一直在重启,导致没法attach进去配置要怎么做啊

You cannot attach to a restarting container, wait until it is running

如果取消restart: always 则会报这个 You cannot attach to a stopped container, start it first

gocq | 您的选择是:未找到配置文件,正在为您生成配置文件中! gocq | 请选择你需要的通信方式: gocq | > 0: HTTP通信 gocq | > 1: 云函数服务 gocq | > 2: 正向 Websocket 通信 gocq | > 3: 反向 Websocket 通信 gocq | > 4: pprof 性能分析服务器 gocq | 请输入你需要的编号(0-9),可输入多个,同一编号也可输入多个(如: 233) gocq | time="2022-07-21T13:51:18Z" level=fatal msg="输入不合法: EOF"

MobiusT avatar Jul 21 '22 13:07 MobiusT