Skip to content

Docker Compose

Aethersailor edited this page Aug 24, 2026 · 5 revisions

🐳 使用 Docker Compose

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

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

正式镜像只发布 linux/amd64 和 linux/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. 准备目录和文件

以下命令从当前正式版本 v0.3.3 取得配置示例和 Compose 文件。Compose 使用 latest 镜像,适合跟随最新稳定版;开始前仍应对照最新正式版本页面。

release='v0.3.3'

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/deploy/docker/compose.yaml" \
  -o /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. 更新

手工更新

先拉取最新稳定镜像并检查配置,再重建容器:

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

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

使用 Watchtower 自动更新

需要无人值守更新时,建议部署 nicholas-fedor/watchtower。它适合家庭服务器、NAS 和本地环境。Rule-Bot Client 的镜像必须保持为 ghcr.io/aethersailor/rule-bot-client:latest;固定版本标签不会自动前移。

在 /opt/rule-bot-client/compose.watchtower.yaml 中保存:

services:
  rule-bot-client:
    labels:
      - com.centurylinklabs.watchtower.enable=true

  watchtower:
    image: nickfedor/watchtower:latest
    container_name: watchtower
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: --interval 3600 --cleanup --label-enable

启动并检查:

cd /opt/rule-bot-client
docker compose -f compose.yaml -f compose.watchtower.yaml up -d
docker compose -f compose.yaml -f compose.watchtower.yaml ps
docker compose -f compose.yaml -f compose.watchtower.yaml logs --tail=100 watchtower

Watchtower 每小时检查一次,并且只处理明确带有启用标签的 Rule-Bot Client;主机上的其他容器不会被纳入。发现新镜像后,它会重新创建容器并清理旧镜像。挂载的配置和数据目录不受影响。更新后仍应检查 Rule-Bot Client 日志中的 instance=... connected 和本地域名清单。

Warning

/var/run/docker.sock 允许容器控制 Docker,通常等同于主机高权限。不要把 Watchtower 暴露到公网,也不要在不信任的主机或商业生产环境中照搬此方案。

查看版本

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

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

停用或卸载容器

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

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

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

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

🧭 Rule-Bot Client

🚀 安装与使用

🧰 配置与故障排查

🔗 关联项目


Clone this wiki locally