
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
https://img.shields.io/github/actions/workflow/status/virtualzone/compose-updater/build.yml?branch=master](https://github.com/virtualzone/compose-updater/actions) https://img.shields.io/github/v/release/virtualzone/compose-updater](https://github.com/virtualzone/compose-updater/releases) https://img.shields.io/github/release-date/virtualzone/compose-updater](https://github.com/virtualzone/compose-updater/releases) https://img.shields.io/docker/image-size/virtualzone/compose-updater](https://hub.docker.com/r/virtualzone/compose-updater) https://img.shields.io/github/license/virtualzone/compose-updater](https://github.com/virtualzone/compose-updater/blob/master/LICENSE)
Compose Updater是一个持续监控运行中Docker容器的应用程序。当镜像更新时,会从仓库拉取(或通过--pull构建)更新后的版本,并重启Docker Compose服务组合(通过down和up -d命令)。
该工具适用于使用定期更新标签的场景(如image:latest或特定主版本image:v3)。不适用于使用不变标签的情况(如固定SemVer版本image:1.2.3),也不会更新Docker Compose文件以使用新版本标签。
需为要监控的服务添加两个标签:
yamlversion: '3' services: web: image: nginx:alpine labels: - "docker-compose-watcher.watch=1" # 标记服务需要被监控 - "docker-compose-watcher.dir=/home/docker/dir" # 指定docker-compose.yml所在目录
docker-compose-watcher.watch=1:将服务暴露给Compose Updater监控docker-compose-watcher.dir:指定docker-compose.yml所在目录;若文件不是默认名称,可使用docker-compose-watcher.file标签指定完整路径和文件名(因无法从运行中容器定位docker-compose.yml文件,此配置必要)使用Docker Compose运行:
yamlversion: '3' services: watcher: image: virtualzone/compose-updater restart: always volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" # 挂载Docker套接字 - "/home/docker:/home/docker:ro" # 挂载compose文件所在目录(只读) environment: INTERVAL: 60 # 检查间隔(分钟)
注意:
/var/run/docker.sock和compose文件所在目录registry认证配置
若拉取镜像的仓库需要认证,可挂载主机的~/.docker/config.json到容器内:
yamlvolumes: # 挂载主机的Docker配置(包含认证信息),假设主机用户为ubuntu - "/home/ubuntu/.docker/config.json:/root/.docker/config.json:ro"
可通过环境变量(推荐)或命令行参数配置:
| Env | Param | 默认值 | 说明 |
|---|---|---|---|
| INTERVAL | -interval | 60 | 检查间隔(分钟) |
| CLEANUP | -cleanup | 0 | 每次运行后执行docker system prune -a -f |
| ONCE | -once | 0 | 运行一次后退出 |
| PRINT_SETTINGS | -printSettings | 1 | 启动时打印配置信息 |
| UPDATE_LOG | -updateLog | '' | 更新和重启日志文件路径 |
| BUILD | -build | 0 | 每次运行时构建YAML中含"build:"的服务镜像 |
| MQTT_BROKER | -mqttBroker | '' | MQTT Broker地址(如tcp://127.0.0.1:1883) |
| MQTT_CLIENT_ID | -mqttClientId | composeupdater | MQTT客户端ID |
| MQTT_TOPIC_PREFIX | -mqttTopicPrefix | composeupdater | MQTT主题前缀 |
| MQTT_USERNAME | -mqttUsername | '' | MQTT用户名 |
| MQTT_PASSWORD | -mqttPassword | '' | MQTT密码 |
可将Compose Updater连接到MQTT Broker(如Eclipse Mosquitto或HiveMQ),以发布更新和重启事件。这些信息可用于通过mqttwarn或Home Assistant发送推送通知。
| 主题 | 对应事件 | 示例内容 |
|---|---|---|
| update | 更新运行开始/结束 | 'start' 或 'done' |
| update/composition/start | 开始检查特定Compose组合的更新 | /path/to/docker-compose.yml |
| update/composition/restart/dry | 因dry-run跳过组合重启 | /path/to/docker-compose.yml |
| update/composition/restart/skip | 因未发现更新跳过组合重启 | /path/to/docker-compose.yml |
| update/composition/restart/start | 开始重启组合 | {"composeFile": "/path/to/docker-compose.yml", "services":[{"name": "service1", "image": "image:tag"}]} |
| update/composition/restart/done | 完成组合重启 | {"composeFile": "/path/to/docker-compose.yml", "services":[{"name": "service1", "image": "image:tag"}]} |
| update/composition/service/built | 服务镜像构建完成 | {"composeFile": "/path/to/docker-compose.yml", "services":[{"name": "service1", "image": "image:tag"}]} |
| update/composition/service/pulled | 服务镜像拉取完成 | {"composeFile": "/path/to/docker-compose.yml", "services":[{"name": "service1", "image": "image:tag"}]} |
以下Home Assistant配置在Docker组合更新并重启后通过***发送消息:
yamlautomation: - alias: "Docker Compose更新通知" trigger: - platform: mqtt topic: "composeupdater/update/composition/restart/done" value_template: "{{ value_json.composeFile }}" action: - service: notify.telegram_bot data: message: "Docker镜像已更新: {{ trigger.payload_json.composeFile }}"
GNU General Public License v3.0
Docker®是Docker, Inc.的商标。本项目不隶属于Docker, Inc.
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务