mirror of
https://github.com/Genshin-bots/gsuid_core.git
synced 2025-06-01 13:09:47 +08:00
* 修正 docker file 的问题 * 将国内和国外的 dockerfile 分开 * 改正 bug * 改正挂载问题,延时挂载 * 改进,使用脚本做集中指令处理,方便后续扩展 * 在 Serverless 平台集成测试 * 更新workdir,使构建出的镜像路径与原文档一直 * 国内构建源也同步修改 * 完善版 docker 代码 * 完善文档和输出信息 * 🚨 `pre-commit-ci`修复格式错误 * 修正官方源 * 针对海外版镜像构建,删除 python 依赖的加速镜像 * 更正格式 * 测试替换功能 * 更正2 * 修正3 * 测试1 * 测试2 * 测试3 * 需要更新 lock 文件中的包地址 * lock 文件需要指定外网地址更新 lock 文件 * uv 包管理器的镜像设置也要修改 1. 删掉 uv.toml 的镜像源 2. 指定使用官方源更新 uv.lock 文件 * 针对海外构建 docker 文件的更新 * 更新海外 docker 构建文件,更新官方源 * 针对海外构建 docker 文件的更新,去掉官方镜像加速源,完善说明 * 🚨 `pre-commit-ci`修复格式错误 * 小问题😂 --------- Co-authored-by: lilixxs <lilixxs@email.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
195 lines
11 KiB
Markdown
195 lines
11 KiB
Markdown
# ⚙️[GenshinUID](https://github.com/KimigaiiWuyi/GenshinUID) Core 0.7.1
|
||
|
||
[](https://github.com/psf/black)
|
||
[](https://pycqa.github.io/isort/)
|
||
[](https://flake8.pycqa.org/)
|
||
[](https://results.pre-commit.ci/latest/github/Genshin-bots/gsuid-core/master)
|
||
|
||
[KimigaiiWuyi/GenshinUID](https://github.com/KimigaiiWuyi/GenshinUID) 的核心部分,平台无关,支持 HTTP/WS 形式调用,便于移植到其他平台以及框架。
|
||
|
||
**💖一套业务逻辑,多个平台支持!**
|
||
|
||
**🎉 [详细文档](https://docs.sayu-bot.com)** ( [快速开始(安装)](https://docs.sayu-bot.com/Started/InstallCore.html) | [链接Bot](https://docs.sayu-bot.com/LinkBots/AdapterList.html) | [插件市场](https://docs.sayu-bot.com/InstallPlugins/PluginsList.html) )
|
||
|
||
## 优点&特色
|
||
|
||
- 🔀 **异步优先**:异步处理~~大量~~消息流,不会阻塞任务运行
|
||
- 🔧 **易于开发**:即使完全没有接触过Python,也能在一小时内迅速上手 👉 [插件编写指南](https://docs.sayu-bot.com/CodePlugins/CookBook.html)
|
||
- ♻ **热重载**:修改插件配置&安装插件&更新插件,无需重启也能直接应用
|
||
- **🌎 [网页控制台](https://docs.sayu-bot.com/Advance/WebConsole.html)**:集成网页控制台,可以通过WEB直接操作**插件数据库/配置文件/检索日志/权限控制/数据统计/批量发送** 等超多操作
|
||
- 📄 **高度统一**:统一**所有插件**的[插件前缀](https://docs.sayu-bot.com/CodePlugins/PluginsPrefix.html)/[配置管理](https://docs.sayu-bot.com/CodePlugins/PluginsConfig.html)/[帮助图生成](https://docs.sayu-bot.com/CodePlugins/PluginsHelp.html)/权限控制/[数据库写入](https://docs.sayu-bot.com/CodePlugins/PluginsDataBase.html)/[订阅消息](https://docs.sayu-bot.com/CodePlugins/Subscribe.html),所有插件编写常见方法一应俱全,插件作者可通过简单的**继承重写**实现**高度统一**的逻辑
|
||
- 💻 **多元适配**:借助上游Bot (NoneBot2 / Koishi / YunzaiBot) 适配,支持QQ/QQ频道/微信/Tg/Discord/飞书/KOOK/DODO/OneBot v11(v12)等多个平台,做到**一套业务逻辑,多个平台支持**!
|
||
- 🚀 **作为插件**:该项目**不能独立使用**,作为**上游Bot (NoneBot2 / Koishi / YunzaiBot)** 的插件使用,无需迁移原本Bot,保留之前全部的功能,便于充分扩展
|
||
- 🛠 **内置命令**:借助内置命令,轻松完成**重启/状态/安装插件/更新插件/更新依赖**等操作
|
||
- 📝 **帮助系统**:通过统一适配,可按照不同**权限输出**不同帮助,并支持插件的**二级菜单注册**至主帮助目录,并支持在帮助界面使用不同的**自定义前缀**
|
||
|
||
<details><summary>主菜单帮助示例</summary><p>
|
||
<a><img src="https://s2.loli.net/2025/02/07/glxaJyS6325zvbG.jpg"></a>
|
||
</p></details>
|
||
|
||
## 感谢
|
||
|
||
- 本项目仅供学习使用,请勿用于商业用途
|
||
- [爱发电](https://afdian.com/a/KimigaiiWuyi)
|
||
- [GPL-3.0 License](https://github.com/Genshin-bots/gsuid_core/blob/master/LICENSE) ©[@KimigaiiWuyi](https://github.com/KimigaiiWuyi)
|
||
|
||
---
|
||
|
||
> [!IMPORTANT]
|
||
>
|
||
> 以下内容未经验证。
|
||
|
||
## 使用 docker 镜像部署
|
||
|
||
> 此镜像使用下文的 Github Actions 自动构建,每 12 小时更新
|
||
|
||
`请先安装好 Docker`
|
||
|
||
|
||
- 镜像地址(docker hub):https://hub.docker.com/repository/docker/lilixxs666/gsuid-core
|
||
|
||
docker hub 网站需要注册账号,并至少选择 Free Plan 才能访问
|
||
|
||
- 镜像名称:`lilixxs666/gsuid-core:dev`
|
||
|
||
- 免费用户有 1 小时 10 次拉取的限制😂
|
||
|
||
---
|
||
|
||
可通过如下指令拉取镜像并运行:
|
||
```bash
|
||
docker run -d \
|
||
--name gsuidcore \
|
||
-e TZ=Asia/Shanghai \
|
||
-e GSCORE_HOST=0.0.0.0 \
|
||
-p 18765:8765 \
|
||
-v /opt/gscore_data:/gsuid_core/data \
|
||
-v /opt/gscore_plugins:/gsuid_core/gsuid_core/plugins \
|
||
lilixxs666/gsuid-core:dev
|
||
```
|
||
在本地按照以上指令容器运行后,可直接进入`localhost:18965/genshinuid`进入核心的后台管理界面
|
||
相关文档见:
|
||
|
||
**镜像参数说明:**
|
||
|
||
| **参数** | **功能** |
|
||
|--------------------------------------|----------------------------------------------------------|
|
||
| `-d` | 服务后台运行 |
|
||
| `--name gsuidcore` | 生成的容器名称,可选,这里指定为 gsuidcore,若不写则系统给随机名称 |
|
||
| `-p 18765:8765` | 端口映射,可选,默认不做映射,只有映射的端口才能被外部访问<br/>这里设置为容器内 8765 端口 → 外部 18765 端口 |
|
||
| `-e TZ=Asia/Shanghai` | 时区,可选,默认值=Asia/Shanghai |
|
||
| `-e GSCORE_HOST=0.0.0.0` | 服务监听地址:可选,默认值=localhost |
|
||
| `-v /opt/gscore_data:/gsuid_core/data ` | 文件映射,可选,只有映射的路径内的文件才能直接从外部读写:原软件的 data 文件夹<br/>可从外部的 /opt/gscore_data 位置访问 |
|
||
| `-v /opt/gscore_plugins:/gsuid_core/gsuid_core/plugins` | 文件映射,可选,只有映射的路径内的文件才能直接从外部读写:原软件的 plugins 文件夹<br/>可从外部的 /opt/gscore_plugins 位置访问                   |
|
||
|
||
**一些容器部署的常见问题**
|
||
详见下文【5. 容器部署的相关使用说明】
|
||
|
||
|
||
**镜像构建整体流程:**
|
||
|
||
- 主分支同步(Github Actions 每 12 小时执行一次):项目主分支(gsuid-core:master) --> fork 的分支 (gsuid-core-prci:master)
|
||
|
||
- 镜像构建(Github Actions 每 12 小时执行一次):fork 的分支 (gsuid-core-prci:master) --> 编译 --> 发布到 dockerhub
|
||
|
||
|
||
**用于实现以上构建流程的 fork 库地址:**
|
||
|
||
- 同步分支(master):https://github.com/lilixxs/gsuid_core-prci/tree/master
|
||
|
||
- Github Action 构建分支(docker-autobuild):https://github.com/lilixxs/gsuid_core-prci/tree/docker-autobuild
|
||
|
||
|
||
**Github Action 配置文件:**
|
||
|
||
- master 分支自动同步:./github/workflows/master-autosync.yaml
|
||
- docker 镜像自动构建:./github/workflows/docker-autobuild.yaml
|
||
|
||
|
||
## 使用 Docker compose 从代码构建 docker 容器(可选)
|
||
|
||
`请先安装好 Docker 与Docker Compose`
|
||
|
||
1. git clone gsuid-core本体
|
||
|
||
```shell
|
||
git clone https://github.com/Genshin-bots/gsuid_core.git --depth=1 --single-branch
|
||
```
|
||
|
||
2. 安装所需插件(可选)
|
||
|
||
```shell
|
||
# cd进入插件文件夹内
|
||
cd plugins
|
||
# 安装v4 GenshinUID
|
||
git clone -b v4 https://github.com/KimigaiiWuyi/GenshinUID.git --depth=1 --single-branch
|
||
```
|
||
|
||
3. Docker Compose 启动
|
||
|
||
> 注意:根据 docker 版本及插件安装情况,composer 命令可能为`docker-composer`或`docker composer`,若下面的语句执行提示指令出错,请换一个语句尝试(若两个语句都提示指令出错,则是`Docker Composer`没有安装
|
||
|
||
```shell
|
||
# 进入项目根目录(此目录下包含 Dockerfile 和 docker-compose.yaml 文件)
|
||
|
||
# 初次安装,需要编译、安装依赖,需执行以下指令:
|
||
docker-compose up -d --build
|
||
|
||
# 之后的部署配置,仅修改 docker-compose.yaml 文件,需执行以下指令:
|
||
# 先停止相关容器
|
||
docker-compose down
|
||
# 再按照新的配置部署新的容器
|
||
docker-compose up -d
|
||
|
||
# 在同一机器上多次重复构建,会出现大量无用的镜像,可使用以下指令清空未使用的镜像
|
||
docker container prune -f
|
||
```
|
||
|
||
4. Docker Compose 配置文件说明
|
||
```yaml
|
||
services:
|
||
gsuid-core:
|
||
build:
|
||
context: .
|
||
# 指定要使用的镜像构建文件
|
||
# Dockerfile = 原软件源(连到国外服务器,适用 Github CI/CD 或 Docker Hub 等外网环境)
|
||
# Dockerfile.cn = 国内镜像源(使用国内镜像源,适用于自己或国内服务器构建)
|
||
dockerfile: Dockerfile.cn
|
||
container_name: gsuidcore
|
||
privileged: true
|
||
restart: unless-stopped
|
||
environment:
|
||
# TZ = 时区设置,可选参数,默认为 Asia/Shanghai
|
||
# GSCORE_HOST = 服务监听地址 (0.0.0.0 = 监听全部地址,启动容器可直接进后台) 可选参数,默认 locaohost (只允许容器内本地访问)
|
||
- TZ=Asia/Shanghai
|
||
- GSCORE_HOST=0.0.0.0
|
||
ports:
|
||
# 端口映射,可自由修改,以下为:容器(core 中配置)8765 对应外部的 18765 端口
|
||
- 18765:8765
|
||
volumes:
|
||
# 仅映射需要的文件夹,避免数据冲突
|
||
# 如需访问项目根目录,需要通过 docker exec -it <容器id> bash 进入容器内部
|
||
# 进入后默认的 /gsuid_core 即为插件根目录,路径与文档路径保持一致
|
||
- /opt/gscore_data:/gsuid_core/data
|
||
- /opt/gscore_plugins:/gsuid_core/gsuid_core/plugins
|
||
```
|
||
5. 容器部署的相关使用说明
|
||
- 如需访问容器部署的 core 的其他路径(上面 yaml 文件中没有映射的文件或路径)则需要通过`docker exec -it <容器id> bash`进入,进入后默认的`/gsuid_core`即对应文档中的 core 根目录`gsuid_core`,其他文档路径与官方文档对应
|
||
|
||
- 若不设定环境变量`GSCORE_HOST`,则 core 默认监听在`localhost`地址,Docker 部署后无法直接连接
|
||
|
||
需要修改`config.json`文件中的`HOST`配置,参考 [https://docs.sayu-bot.com/Started/CoreConfig.html](https://docs.sayu-bot.com/Started/CoreConfig.html)
|
||
|
||
(以上面的 yaml 文件为例,配置文件在文档中的路径为`gsuid_core/data`,则对应在容器外部的地址为`/gscore_data/config.json`,需将其中的`host`配置修改为`0.0.0.0`
|
||
|
||
然后执行`docker restart <容器id>`重启容器
|
||
|
||
|
||
- 关于端口配置,由于 docker 容器本身会对端口做转发(对应 yaml 文件中的`port`部分,因此建议使用 docker compose 的相关配置或 docker 指令来修改端口,而不用 core 本身的配置来修改
|
||
|
||
同时每次 docker 修改端口、监听地址后都需要先删除当前容器重新执行`docker compose up -d`指令重新部署
|
||
|
||
- 如需增加插件,建议使用命令进行安装,也可进入容器项目根目录手动安装
|
||
|
||
- 如果Bot(例如 NoneBot2、HoshinoBot)也是Docker部署的,Core或其插件更新后,建议将Core和Bot的容器都重启,保证修改生效
|