机器人搭建记录 yobot(Docker版本)

机器人搭建记录 yobot(Docker版本)

前言

在上一篇,我们介绍了如何在Linux & Windows环境下进行部署. 本章我们主要简述如何使用Docker进行部署.


正文

官方教程使用 Docker 自动脚本部署

官方的一键脚本

sudo bash -c "$(curl get.yobot.win)"

我将脚本的内容下载了下来. 说实话, 脚本运行的过程中有不少问题. 并且不支持错误重新安装, 且国内网络不通等问题. 其可用性比较差. 我们将脚本拆散, 遇到错误地方一步一步运行即可.


脚本内容(附带注释)

#!/bin/bash
set -e

# 判断运行环境(其实没啥必要)
# ensure amd64
if [ $(dpkg --print-architecture) != "amd64" ]; then
    echo "Sorry, the architecture of your device is not supported yet."
    exit
fi

# ensure run as root
if [ $EUID -ne 0 ]; then
    echo "Please run as root"
    exit
fi

echo "
yobot-gocqhttp installer script

What will it do:
1. install docker
2. run yobot in docker
3. run go-cqhttp in docker

After script finished, you need to press 'ctrl-p, ctrl-q' to detach the container.

"

# 输入机器人用户名和密码,为方便后续配置
read -p "请输入作为机器人的QQ号:" qqid
read -p "请输入作为机器人的QQ密码:" qqpassword
export qqid
export qqpassword

echo "开始安装,请等待"

# 创建文件夹
mkdir yobot_data gocqhttp_data

# 判断是否存在docker命令。没有下载docker进行安装
if [ -x "$(command -v docker)" ]; then
    echo "docker found, skip installation"
else
    echo "installing docker"
    curl -fsSL "https://get.docker.com" | sh
fi

# docker创建一个网络叫做qqbot
docker network create qqbot

# docker拉取2个镜像文件
docker pull alpine
docker pull yobot/yobot

# 拉取go-cqhttp文件 从https://api.github.com/repos/Mrs4s/go-cqhttp/releases
# 其实在执行这个步骤时候,有时网络不好会执行很长一段时间
echo "downloading latest gocqhttp"
docker run --rm -v ${PWD}:/work -w /work python:3.7-slim-buster python3 -c "
import json
import urllib.request
import ssl
url = 'https://api.github.com/repos/Mrs4s/go-cqhttp/releases'
resp = urllib.request.urlopen(url).read().decode('utf-8')
assets = json.loads(resp)[0]['assets']
for item in assets:
    if item['name'].endswith('linux-amd64.tar.gz'):
        download = item['browser_download_url']
        break
resp = urllib.request.urlopen(download).read()
f = open('go-cqhttp.tar.gz', 'wb')
f.write(resp)
f.close()
"
# 解压go-cqhttp文件
tar zxf go-cqhttp.tar.gz
rm go-cqhttp.tar.gz -f

# 编写一个Dockerfile文件
# 打一个go-cqhttp文件包 将其打成docker image
echo "building gocqhttp container"
echo "
FROM alpine:latest
ADD go-cqhttp /bin/go-cqhttp
WORKDIR /bot
ENTRYPOINT /bin/go-cqhttp
">Dockerfile
docker build . -t gocqhttp
rm Dockerfile -f

# 初始化go-cqhttp项目
echo "initializing gocqhttp configure file"
docker run --rm \
           -v ${PWD}/gocqhttp_data:/bot \
           gocqhttp >/dev/null 2>&1

# 使用python镜像,处理更改cqhttp的配置文件。
echo "writing configure files"
docker run --rm -v ${PWD}:/work -w /work -e qqid -e qqpassword python:3.7-slim-buster python3 -c "
import json, os, random, string
access_token = ''.join(random.choices(string.ascii_uppercase + string.ascii_lowercase + string.digits, k=16))
with open('yobot_data/yobot_config.json', 'w') as f:
    json.dump({'access_token': access_token}, f, indent=4)
with open('gocqhttp_data/config.json', 'r+') as f:
    config = json.load(f)
    config['uin'] = int(os.environ['qqid'])
    config['password'] = os.environ['qqpassword']
    config['access_token'] = access_token
    config['enable_db'] = False
    config['web_ui']['enabled'] = False
    config['http_config']['enabled'] = False
    config['ws_config']['enabled'] = False
    config['ws_reverse_servers'] = [{
        'enabled': True,
        'reverse_url': 'ws://yobot:9222/ws/',
        'reverse_api_url': '',
        'reverse_event_url': '',
        'reverse_reconnect_interval': 3000
    }]
    f.seek(0)
    f.truncate()
    json.dump(config, f, indent=4)
"

# 启动yobot镜像
echo "starting yosbot"
docker run -d \
           --name yobot \
           -p 9222:9222 \
           --network qqbot \
           -v ${PWD}/yobot_data:/yobot/yobot_data \
           yobot/yobot

# 启动go-cqhttp镜像
echo "starting gocqhttp"
docker run -it \
           --name gocqhttp \
           --network qqbot \
           -v ${PWD}/gocqhttp_data:/bot \
           gocqhttp

附带注释的脚本文件如上所示。可以看出,如果当你第一次停止后,第二次再进行创建文件夹时候就会报错。mkdir yobot_data gocqhttp_data. 应该选用mkdir -xx yobot_data. 作者在这边还是略显的年轻.


Reference

[1]. 使用 Docker 自动脚本部署[2].

已标记关键词 清除标记
相关推荐
<p> <strong><span style="font-size:24px;">课程简介:</span></strong><br /> <span style="font-size:18px;">历经半个多月的时间,</span><span style="font-size:18px;">Debug</span><span style="font-size:18px;">亲自撸的 “企业员工角色权限管理平台” 终于完成了。正如字面意思,本课程讲解的是一个真正意义上的、企业级的项目实战,主要介绍了企业级应用系统中后端应用权限的管理,其中主要涵盖了六大核心业务模块、十几张数据库表。</span><span></span> </p> <p> <span style="font-size:18px;">其中的核心业务模块主要包括用户模块、部门模块、岗位模块、角色模块、菜单模块和系统日志模块;与此同时,</span><span style="font-size:18px;">Debug</span><span style="font-size:18px;">还亲自撸了额外的附属模块,包括字典管理模块、商品分类模块以及考勤管理模块等等,主要是为了更好地巩固相应的技术栈以及企业应用系统业务模块的开发流程!</span><span></span> </p> <p> <br /> </p> <p> <span style="font-size:24px;"><strong>核心技术栈列表</strong></span><span style="font-size:24px;"><strong>:</strong></span> </p> <p> <br /> </p> <p> <span style="font-size:18px;">值得介绍的是,本课程在技术栈层面涵盖了前端和后端的大部分常用技术,包括</span><span style="font-size:18px;">Spring Boot</span><span style="font-size:18px;">、</span><span style="font-size:18px;">Spring MVC</span><span style="font-size:18px;">、</span><span style="font-size:18px;">Mybatis</span><span style="font-size:18px;">、</span><span style="font-size:18px;">Mybatis-Plus</span><span style="font-size:18px;">、</span><span style="font-size:18px;">Shiro(</span><span style="font-size:18px;">身份认证与资源授权跟会话等等</span><span style="font-size:18px;">)</span><span style="font-size:18px;">、</span><span style="font-size:18px;">Spring AOP</span><span style="font-size:18px;">、防止</span><span style="font-size:18px;">XSS</span><span style="font-size:18px;">攻击、防止</span><span style="font-size:18px;">SQL</span><span style="font-size:18px;">注入攻击、过滤器</span><span style="font-size:18px;">Filter</span><span style="font-size:18px;">、验证码</span><span style="font-size:18px;">Kaptcha</span><span style="font-size:18px;">、热部署插件</span><span style="font-size:18px;">Devtools</span><span style="font-size:18px;">、</span><span style="font-size:18px;">POI</span><span style="font-size:18px;">、</span><span style="font-size:18px;">Vue</span><span style="font-size:18px;">、</span><span style="font-size:18px;">LayUI</span><span style="font-size:18px;">、</span><span style="font-size:18px;">ElementUI</span><span style="font-size:18px;">、</span><span style="font-size:18px;">JQuery</span><span style="font-size:18px;">、</span><span style="font-size:18px;">HTML</span><span style="font-size:18px;">、</span><span style="font-size:18px;">Bootstrap</span><span style="font-size:18px;">、</span><span style="font-size:18px;">Freemarker</span><span style="font-size:18px;">、一键打包部署运行工具</span><span style="font-size:18px;">Wagon</span><span style="font-size:18px;">等等,如下图所示:</span><span></span> </p> <img src="https://img-bss.csdn.net/201908070402564453.png" alt="" /> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p> <p> <span style="font-size:24px;">课程内容与收益</span><span style="font-size:24px;">:</span><span></span> </p> <p> <br /> </p> <p> <img src="https://img-bss.csdn.net/201908070403452052.png" alt="" /> </p> <p> <span style="font-size:18px;">总的来说,</span><span style="font-size:18px;">本课程是一门具有很强实践性质的“项目实战”课程,即“</span><span style="font-size:18px;">企业应用员工角色权限管理平台</span><span style="font-size:18px;">”,主要介绍了当前企业级应用系统中员工、部门、岗位、角色、权限、菜单以及其他实体模块的管理;其中,还重点讲解了如何基于</span><span style="font-size:18px;">Shiro</span><span style="font-size:18px;">的资源授权实现员工</span><span style="font-size:18px;">-</span><span style="font-size:18px;">角色</span><span style="font-size:18px;">-</span><span style="font-size:18px;">操作权限、员工</span><span style="font-size:18px;">-</span><span style="font-size:18px;">角色</span><span style="font-size:18px;">-</span><span style="font-size:18px;">数据权限的管理;在课程的最后,还介绍了如何实现一键打包上传部署运行项目等等。如下图所示为本权限管理平台的数据库设计图:</span> </p> <p> <span></span> </p> <p> <br /> </p> <p> <img src="https://img-bss.csdn.net/201908070404285736.png" alt="" /> </p> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p> <p> <span style="font-size:18px;"><strong>以下为项目整体的运行效果截图:</strong></span> <span></span> </p> <img src="https://img-bss.csdn.net/201908070404538119.png" alt="" /> <p> <br /> </p> <p> <img src="https://img-bss.csdn.net/201908070405002904.png" alt="" /> </p> <p> <br /> </p> <p> <br /> </p> <p> <img src="https://img-bss.csdn.net/201908070405078322.png" alt="" /> </p> <p> <br /> </p> <p> <img src="https://img-bss.csdn.net/201908070405172638.png" alt="" /> </p> <p> <br /> </p> <p> <img src="https://img-bss.csdn.net/201908070405289855.png" alt="" /> </p> <p> <br /> </p> <p> <img src="https://img-bss.csdn.net/201908070405404509.png" alt="" /> </p> <p> <br /> </p> <p> <img src="https://img-bss.csdn.net/201908070405523495.png" alt="" /> </p> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p> <p style="text-align:left;"> <span style="font-size:18px;">值得一提的是,在本课程中,</span><span style="font-size:18px;">Debug</span><span style="font-size:18px;">也向各位小伙伴介绍了如何在企业级应用系统业务模块的开发中,前端到后端再到数据库,最后再到服务器的上线部署运行等流程,如下图所示:</span><span></span> </p> <img src="https://img-bss.csdn.net/201908070406328884.png" alt="" /> <p> <br /> </p>
<p> <strong><span style="background-color:#FFFFFF;color:#E53333;font-size:24px;">本页面购买不发书!!!仅为视频课购买!!!</span></strong> </p> <p> <strong><span style="color:#E53333;font-size:18px;">请务必到</span></strong><a href="https://edu.csdn.net/bundled/detail/49?utm_source=banner"><strong><span style="color:#E53333;font-size:18px;">https://edu.csdn.net/bundled/detail/49</span></strong></a><strong><span style="color:#E53333;font-size:18px;">下单购买课+书。</span></strong> </p> <p> <span style="font-size:14px;">本页面,仅为观看视频页面,如需一并购买图书,请</span><span style="font-size:14px;">务必到</span><a href="https://edu.csdn.net/bundled/detail/49?utm_source=banner"><span style="font-size:14px;">https://edu.csdn.net/bundled/detail/49</span></a><span style="font-size:14px;">下单购买课程+图书!!!</span> </p> <p> <br /> </p> <p> <span style="font-size:14px;">疯狂Python精讲课程覆盖《疯狂Python讲义》全书的主体内容。</span> </p> <span style="font-size:14px;">内容包括Python基本数据类型、Python列表、元组和字典、流程控制、函数式编程、面向对象编程、文件读写、异常控制、数据库编程、并发编程与网络编程、数据可视化分析、Python爬虫等。</span><br /> <span style="font-size:14px;"> 全套课程从Python基础开始介绍,逐步步入当前就业热点。将会带着大家从Python基础语法开始学习,为每个知识点都提供对应的代码实操、代码练习,逐步过渡到文件IO、数据库编程、并发编程、网络编程、数据分 析和网络爬虫等内容,本课程会从小案例起,至爬虫、数据分析案例终、以Python知识体系作为内在逻辑,以Python案例作为学习方式,最终达到“知行合一”。</span><br />
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页