Docker Compose
Docker Compose在容器中一起运行TomoriBot和PostgreSQL。它是与安装向导和手动安装并列的第三个安装选项:当你想要运行Docker中的所有内容而不在主机系统上安装Bun或PostgreSQL时,请选择它。它绕过交互式安装向导并自动配置数据库连接。
1. 获取代码
Section titled “1. 获取代码”git clone https://github.com/Bredrumb/TomoriBot.gitcd TomoriBot2. 必须的.env值
Section titled “2. 必须的.env值”从示例文件开始:
cp .env.example .env在.env中设置这些必需的变量:
| 多变的 | 价值 |
|---|---|
DISCORD_TOKEN | 你的Discord机器人令牌(启用GuildMembers、MessageContent和GuildPresences特权意图)。 |
CRYPTO_SECRET | 用于加密存储的API密钥的32字符加密密钥。 |
POSTGRES_PASSWORD | 数据库密码。每个其他POSTGRES_*值都是自动配置的。 |
使用Docker为CRYPTO_SECRET生成一个随机的32个字符值,然后将其复制到.env中:
docker run --rm alpine:3.22 sh -c "head -c 24 /dev/urandom | base64"为POSTGRES_PASSWORD生成单独的密码。你可以从.env.optional.example复制可选的调谐设置。
在Linux上,在启动容器之前在主机上创建绑定安装目录并将所有权分配给UID 1001。Docker以root身份创建丢失的挂载点,这会阻止bot容器保存备份、日志或上传:
mkdir -p backups logs datasudo chown 1001:1001 backups logs data3. 构建并运行
Section titled “3. 构建并运行”docker compose build # first time, or after code/dependency changesdocker compose up # bot + database对于以后的启动,单独docker compose up就足够了,除非你更改代码或依赖项。一旦机器人连接到Discord,请在任何服务器通道中运行/setup以添加你的AI提供商密钥。有关Discord中的设置选项,请参阅快速入门。
在其服务定义中组合引脚RUN_ENV=development,以便.env机密和本地HTTP端点正常工作。容器健康检查报告bot进程是否正在运行; 它不测试Discord网关连接。
单台主机上的可选分片配置
Section titled “单台主机上的可选分片配置”保持 SHARD_COUNT 和 SHARD_IDS 未设置为默认行为:单个进程拥有 Discord 在启动时推荐的所有分片。小型安装通常会分配到一个分片。此模式不使用分片租约或缓存失效监听器。多个分片可以共享同一个进程。
要在现有服务中运行四个分片,请在 .env 中添加 SHARD_COUNT=4 并保持 SHARD_IDS 未设置。在 compose.override.yaml 中添加此服务覆盖以允许有界关闭完成:
services: tomoribot: stop_grace_period: 40s使用 docker compose up -d --build tomoribot 重新创建服务。如果脚本调用 docker stop 或提供其自己的 Compose 停止超时,请在其中也预留至少 40 秒。自动选择不会在运行时更改分片数量;更改总数需要协调重启。
可选的静态子集需要为每个组配置一个单独的服务,具有相同的显式 SHARD_COUNT 和不相交的 SHARD_IDS,例如 0,1 和 2,3,总数为 4。为服务指定不同的稳定名称、容器名称和任何已发布的健康检查端口。应用程序从每个组中派生出稳定的指标标签。保持单个数据库,在网关启动前使用架构管理凭据运行现有的单次 bun run src/db/initializeCli.ts 命令,并在每个网关进程上设置 DATABASE_SCHEMA_MANAGEMENT_ENABLED=false。请勿与这些组一起启动原始的全分片所有者服务。在更改总数或分区之前停止旧的所有者进程。
子集模式拒绝完全配置的 Matrix 桥接。每个用户的回合和上传限制仍然是按进程计算的,因此在启用第二个进程之前,请确定其成倍增加的配额是否可以接受。使用 release 分支专享的赞助者计费的安装在从多个进程处理资助请求之前,还需要共享支出准入和对账协调。有关安全性和健康状态限制,请参阅分片与进程所有权。
4. 可选本地服务器(Compose profile)
Section titled “4. 可选本地服务器(Compose profile)”使用Compose配置文件运行可选的本地帮助服务器,以便你只启动你需要的内容:
# SearXNG (private web search) + Crawl4AI (browser-rendered fetch)docker compose --profile searxng --profile fetch-crawl4ai up当启用SearXNG时,请在.env中设置SEARXNG_BASE_URL=http://searxng:8080/。否则请保持未设置状态。将SEARXNG_SECRET设置为SearXNG请求签名的单独随机值。
有关特定于服务器的设置,请参阅 SearXNG、Crawl4AI 和 本地监控。
维护、更新和备份
Section titled “维护、更新和备份”使用bun run update --docker在Compose部署上进行备份优先更新。要备份或恢复Compose数据库,请参阅维护和备份。