写在前面:

​ 因Github原仓库被ban,原仓库每次提交github action自动编译的镜像已经很久没更新了,简单来说,镜像还是原本的oicq库,所以想用docker需要自行按照喵喵仓库里给的Dockerfile构建镜像。

​ 如今在维护的仓库有Miao-YunzaiYunzai-Bot,下面用的都是Miao-Yunzai


构建镜像

安装docker

  • 通过脚本或者自行百度方法进行安装

  • 推荐使用脚本安装docker:

    1
    2
    curl -fsSL get.docker.com -o get-docker.sh
    sudo sh get-docker.sh --mirror Aliyun
  • 开机自启

    1
    2
    sudo systemctl enable docker
    sudo systemctl restart docker
  • 配置镜像加速( :配置个人阿里云镜像加速器请自行百度搜索方法):

安装docker-compose

  • 如果平时用的是非root用户,请切换到root用户进行安装,输入密码进行切换

  • 如果想在ubuntu上可以默认用root权限登录,那么可以参考ubuntu默认root登录设置

    1
    sudo -i
  • 安装命令(连接不上多次重试,国内快速脚本坏掉了,从DaoCloud上下载的docker-compose有问题):

    1
    sudo curl -L "https://ghproxy.com/https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • 赋予执行权限并查看版本号,确定是否安装成功:

    1
    2
    sudo chmod +x /usr/local/bin/docker-compose
    docker-compose --version
  • 如果平时使用的是非root用户,请退出root

    1
    exit

下载与构建

  • 拉取所需文件到本地

  • 使用wget

    1
    wget -P ./Miao-Yunzai https://gitee.com/yoimiya-kokomi/Miao-Yunzai/raw/master/docker/Dockerfile https://gitee.com/yoimiya-kokomi/Miao-Yunzai/raw/master/docker/docker-entrypoint.sh https://gitee.com/yoimiya-kokomi/Miao-Yunzai/raw/master/docker-compose.yaml
  • 进入文件目录

    1
    cd ./Miao-Yunzai
  • 构建镜像

    1
    sudo docker build -t yunzai:v1.0 .

    注意最后有个点,默认使用“上下文目录”下的Dockerfile文件

  • 等待,也许卡在下载,也许报错,卡住报错可能是网络问题。比如:

    • 卡住先Ctrl+C退出。

    • 底层镜像的拉取:node:lts-slim busybox:latest 拉取耗时很长或者超时,给docker添加镜像加速器,可自行搜索“配置镜像加速器”等关键词寻找方法。23年4月1日:阿里的镜像加速器拉取的还是一年前的,不知道咋回事,不是最新的镜像。

    • 出现=> ERROR [internal] load metadata for docker.io/library/busybox:latest爆红的问题,可以先

      1
      sudo docker pull busybox:latest

      再重新构建就好了。或者禁用“buildkit”???亦或是Error load metadata for docker.io/library/XXX (github.com)上有多种解答方案。

    • ffmpeg的下载:我的解决办法是关掉,即Dockerfile中改为false;或者自己手动下载后搭建网络环境可以使用的HFS(http文件分享)服务(需要公网ip)更改Dockerfile里的ffmpeg地址;或者手动下载后蒋Dockerfile里的ffmpeg地址改为本地。

    • Failed to fetch http://security.debian.org/debian-security/:在Dockerfile中自主换debian-security源或者多次重试,一般是网络不是很好,但是也是能连上的状态。

  • 如此,便构建成功了

部署容器

这部分主要是修改docker-compose.yml。

修改docker-compose.yml

  • 将图中大框内容删除(因为已经构建完了),将./docker更改为之前构建的yunzai:v1.0

  • 下载redis数据库的配置文件,按照他给的方法,创建对应目录放置好。

便捷部署

首次运行

首次运行如果 QQ 登录需要验证或者扫码登录,请按以下步骤进行操作。

  1. 启动容器

    在工作目录内运行命令,拉起容器,并运行初始化命令。

    1
    2
    docker-compose up -d
    docker exec -it yunzai-bot node app
  2. 完成验证,重启容器

    验证完成后,按快捷键 Ctrl+C 退出,然后重启容器

    1
    docker-compose restart

常用命令

  • 后台运行

    1
    docker-compose up -d
  • 前台运行

    1
    docker-compose up
  • 停止运行

    1
    docker-compose down
  • 重启/更新

    重启时会自动拉取最新项目并更新相关依赖

    1
    docker-compose restart
  • 查看日志

    查看最后的 100 行日志并持续输出日志

    1
    docker-compose logs -f --tail=100

插件细节

常见报错及处理办法

  • 待积累