将鸣潮bot全部丢到docker中运行

上一篇文章我搭起来了基于GsCore的鸣潮TelegramBot,结果在前几天,我的VPS莫名其妙宕机了一下(服务稳定性不行啊你这),直接重启了,导致丢在screen中运行的程序都停止了。于是决定一不做二不休,直接将本来丢在screen的nonebot和gensokyo全部丢到docker中运行,保证VPS重启了服务也能自行恢复运行。

nonebot部署到docker

nonebot部署到docker相对比较简单,其nb脚手架已经有插件来生成Dockerfiledocker-compose.yml

1
2
3
4
5
6
7
# 首先是声明依赖
source ~/wuwa/.venv/bin/activate # 进入bot的虚拟环境,自行将~/wuwa替换为自己的bot项目路径
pip freeze > requirements.txt # 使用 requirements.txt 文件来声明依赖
# 安装脚手架的docker插件
nb self install nb-cli-plugin-docker
# 生成Dockerfile和docker-compose.yml
nb docker generate # 在你的bot项目目录中执行,如~/wuwa/,此时会在bot根目录中生成Dockerfile和docker-compose.yml

然后由于与GsCore通信的需要,修改一下docker-compose.yml。将其中PORTS部分删除,替换为如下部分

1
2
network_mode: host
# 其实添加一个8765端口的映射可能也可以,但是不太确定GenshinUID插件与GsCore通信的逻辑,所以用host最省心且确认没问题

替换之后就可以启动容器了

1
2
3
4
nb docker up
# 用nb脚手架查看日志和停止容器的命令如下,当然直接用docker的相关命令也是可以的
nb docker logs
nb docker down

Gensokyo-Telegram部署到docker

Gensokyo-Telegram目前并没有相关docker镜像也没有什么便捷操作,于是需要我们自己写Dockerfiledocker-compose.yml
因为这只是一个简单的可执行二进制文件,所以其实也非常简单。

1
2
cd ~/gensokyo
nano Dockerfile # vim Dockerfile

具体Dockerfile内容如下

1
2
3
4
5
FROM alpine:3.18
WORKDIR /gensokyo-tg
COPY . .
RUN chmod +x gensokyo
CMD ["./gensokyo"]

保存,然后再nano docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
version: '3.8'

services:
gensokyo:
build: .
image: gensokyo-tg
container_name: gensokyo-tg
network_mode: host
volumes:
- /root/gensokyo:/gensokyo-tg # 这里冒号前的路径需要是自己gensokyo文件夹的路径,如果全程跟我的教程一样的话那就可以照抄
restart: unless-stopped

保存,然后就可以启动了

1
docker compose up -d --build

不出意外就顺利启动,以后就不用担心VPS莫名其妙宕机一秒导致服务全挂了XD


将鸣潮bot全部丢到docker中运行
https://nekonya.one/2025/04/22/将鸣潮bot全部丢到docker中运行/
作者
Guawazi233
发布于
2025年4月22日
许可协议