Skip to content

Docker Compose

Aethersailor edited this page Aug 11, 2026 · 2 revisions

🐳 使用 Docker Compose

🧭 页面导航: Linux 部署方式 · 配置说明 · 故障排查 · Wiki 首页

Docker Compose 使用一个 compose.yaml 文件描述容器镜像、网络和目录挂载,然后通过 docker compose 命令统一启动、停止或更新容器。本页提供完整示例,不需要自行编写 Compose 文件。

正式镜像只发布 linux/amd64linux/arm64。开始前,准备 Mihomo 控制接口地址和可选密钥,并把 Mihomo 日志级别设为 info 或更详细。不了解这些信息时,先阅读配置说明:Mihomo 控制接口是什么

📌 本页导航: 使用条件 · 准备文件 · 编辑配置 · 启动验证 · 更新 · 卸载

使用条件和权限

下面的示例使用:

  • 普通 Docker Engine,不是 Rootless 模式;
  • 宿主机网络;
  • 固定的 Linux 用户和组编号 10001:10001

使用宿主机网络后,容器可以直接连接只监听在宿主机 127.0.0.1:9090 的 Mihomo。Rule-Bot Client 本身不对外监听端口。

Warning

以下 docker compose 命令需要由有权使用 Docker 后台服务的账户执行。否则,应按本机 Docker 的安装方式在命令前使用 sudo。不要为了运行这些命令而随意放宽 Docker socket 权限。能够控制 Docker 后台服务,通常也意味着能够取得主机上的高权限。

Note

进阶环境提醒: Rootless Docker、启用 userns-remap,或者启用 SELinux 强制策略的主机,需要按实际环境调整用户和组编号映射,或调整目录挂载标签。不能直接照用下面的权限值。

1. 准备目录和同版本文件

以下命令把配置示例、Compose 文件和容器镜像固定到同一个正式版本 v0.2.0,避免不同版本的文件混用。执行前,对照最新正式版本页面确认版本。

release='v0.2.0'
image_version=${release#v}

sudo install -d -m 0755 /opt/rule-bot-client
sudo install -d -o 10001 -g 10001 -m 0750 /opt/rule-bot-client/data

curl -fsSL \
  "https://raw.githubusercontent.com/Aethersailor/Rule-Bot-Client/$release/deploy/docker/config.json" \
  -o /tmp/rule-bot-client-config.json
sudo install -o root -g 10001 -m 0640 \
  /tmp/rule-bot-client-config.json /opt/rule-bot-client/config.json
rm /tmp/rule-bot-client-config.json

curl -fsSL \
  "https://raw.githubusercontent.com/Aethersailor/Rule-Bot-Client/$release/compose.yaml" \
  -o /tmp/rule-bot-client-compose.yaml
sed -i "s#:latest\$#:${image_version}#" /tmp/rule-bot-client-compose.yaml
sudo install -m 0644 \
  /tmp/rule-bot-client-compose.yaml /opt/rule-bot-client/compose.yaml
rm /tmp/rule-bot-client-compose.yaml

容器使用 Linux 用户和组编号 10001:10001 运行。不要跳过目录所有者和配置权限设置,否则容器可能无法读取配置或写入结果。

2. 编辑配置

sudo editor /opt/rule-bot-client/config.json

示例中的路径已经与 Compose 目录挂载匹配:

  • 容器读取 /data/config.json
  • 域名结果写入 /data/data/domains.txt
  • 对应的宿主机结果文件是 /opt/rule-bot-client/data/domains.txt

Mihomo 位于其他设备时,把 instances 中的 url 改为那台设备的控制接口地址。Mihomo 没有设置 secret 时,可以删除该字段。首次安装保持 rule_bot.enabled=false,先验证本地收集。

3. 检查并启动

cd /opt/rule-bot-client
docker compose config --quiet
docker compose run --rm rule-bot-client --config /data/config.json --check
docker compose up -d
docker compose ps
docker compose logs --tail=100

docker compose config --quiet 检查 Compose 文件。随后运行的 --check 检查 Rule-Bot Client 配置、凭据和证书文件,但不测试 Mihomo 网络连接。

启动后,日志中应出现 instance=... connected,表示对应监听目标已经连接。然后访问一个此前未收集的域名,并在 Mihomo 管理面板或日志中确认它最终由兜底规则 MATCH 处理。

等待最长一个刷新间隔,再检查本地结果:

sudo cat /opt/rule-bot-client/data/domains.txt

4. 更新

release 改成目标正式版本,并保留开头的 v。先下载同一版本的新 Compose 文件和配置示例。配置示例只用于查看新增或变化的字段,不要覆盖包含真实密钥和访问令牌的现有配置。

release='v0.2.0'
image_version=${release#v}

curl -fsSL \
  "https://raw.githubusercontent.com/Aethersailor/Rule-Bot-Client/$release/compose.yaml" \
  -o /tmp/rule-bot-client-compose.yaml
sed -i "s#:latest\$#:${image_version}#" /tmp/rule-bot-client-compose.yaml
curl -fsSL \
  "https://raw.githubusercontent.com/Aethersailor/Rule-Bot-Client/$release/deploy/docker/config.json" \
  -o /tmp/rule-bot-client-config.example.json

cat /tmp/rule-bot-client-config.example.json
sudo install -m 0644 \
  /tmp/rule-bot-client-compose.yaml /opt/rule-bot-client/compose.yaml.next
rm /tmp/rule-bot-client-compose.yaml /tmp/rule-bot-client-config.example.json

根据目标版本的说明修改现有 config.json,并把自定义环境变量、Rootless、userns-remap 或 SELinux 设置合并到 compose.yaml.next

先用新 Compose 文件检查现有配置。检查失败时,不要替换当前正在使用的 Compose 文件:

sudo editor /opt/rule-bot-client/config.json
sudo editor /opt/rule-bot-client/compose.yaml.next
cd /opt/rule-bot-client
docker compose -f compose.yaml.next config --quiet
docker compose -f compose.yaml.next pull
docker compose -f compose.yaml.next run --rm \
  rule-bot-client --config /data/config.json --check

以上检查都成功后,再切换到新 Compose 文件并更新容器:

cd /opt/rule-bot-client
sudo install -m 0644 compose.yaml.next compose.yaml
sudo rm compose.yaml.next
docker compose pull
docker compose up -d
docker compose ps
docker compose logs --tail=100

更新后,确认日志出现 instance=... connected,并再次检查本地域名清单。现有 config.json 和数据目录不会被上述步骤覆盖。

查看版本

cd /opt/rule-bot-client
docker compose run --rm rule-bot-client --version

输出包含版本、源码提交和构建时间。

停用或卸载容器

需要停止并删除容器,但保留配置和域名数据时,执行:

cd /opt/rule-bot-client
docker compose down

数据保存在宿主机目录 /opt/rule-bot-clientdocker compose down 不会删除这个目录。

如果确认以后不再使用这些配置和数据,需要另外检查、备份并清理 /opt/rule-bot-client。不要在没有检查内容时直接删除整个目录。

🧭 Rule-Bot Client

🚀 安装与使用

🧰 配置与故障排查


Clone this wiki locally