-
Notifications
You must be signed in to change notification settings - Fork 0
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 强制策略的主机,需要按实际环境调整用户和组编号映射,或调整目录挂载标签。不能直接照用下面的权限值。
以下命令把配置示例、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 运行。不要跳过目录所有者和配置权限设置,否则容器可能无法读取配置或写入结果。
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,先验证本地收集。
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=100docker compose config --quiet 检查 Compose 文件。随后运行的 --check 检查 Rule-Bot Client 配置、凭据和证书文件,但不测试 Mihomo 网络连接。
启动后,日志中应出现 instance=... connected,表示对应监听目标已经连接。然后访问一个此前未收集的域名,并在 Mihomo 管理面板或日志中确认它最终由兜底规则 MATCH 处理。
等待最长一个刷新间隔,再检查本地结果:
sudo cat /opt/rule-bot-client/data/domains.txt将 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-client。docker compose down 不会删除这个目录。
如果确认以后不再使用这些配置和数据,需要另外检查、备份并清理 /opt/rule-bot-client。不要在没有检查内容时直接删除整个目录。