当web容器标签变更时,如何自动重启docker-compose中的ofelia容器?
实现Web容器标签变更时自动重启Ofelia容器
用户提供的Docker Compose配置
version: "3.9" services: web: build: . volumes: - .:/app labels: ofelia.enabled: "true" ofelia.job-exec.my-job.schedule: "0 0 11 * * *" ofelia.job-exec.my-job.command: "bundle exec ruby myjob" ofelia: image: mcuadros/ofelia:latest restart: always depends_on: - web command: daemon --docker volumes: - /var/run/docker.sock:/var/run/docker.sock:ro
问题描述
当web容器的调度标签(Ofelia任务配置标签)变更后,执行docker-compose up -d --build只会重建web容器,但Ofelia不会自动加载新的标签配置,必须手动执行docker-compose restart ofelia才能生效。需要实现Web容器重建时自动重启Ofelia的方案。
可行解决方案
1. 扩展部署命令(最简单直接)
在部署命令后追加重启Ofelia的操作,一键完成部署和配置刷新:
docker-compose up -d --build && docker-compose restart ofelia
如果频繁执行,可以将该命令封装成Shell脚本(如deploy.sh),简化操作流程。
2. 利用Docker事件监控自动触发
编写监控脚本监听Docker容器的更新事件,当web容器完成更新后自动重启Ofelia:
#!/bin/bash # 替换为实际的web容器名称(可通过docker-compose ps查看) TARGET_CONTAINER="$(basename $(pwd))_web_1" docker events --filter "event=update" --filter "container=$TARGET_CONTAINER" | while read _ do docker-compose restart ofelia done
将脚本后台运行(如nohup ./monitor_ofelia.sh &),即可实现无人值守的自动重启。
3. 启用Ofelia的Docker容器自动监控(最优方案)
Ofelia的新版本支持--docker-watch参数,启用后会自动监控Docker容器的变化(包括标签更新),无需手动重启。修改Ofelia服务的command配置:
ofelia: image: mcuadros/ofelia:latest restart: always depends_on: - web command: daemon --docker --docker-watch volumes: - /var/run/docker.sock:/var/run/docker.sock:ro
添加该参数后,Ofelia会自动感知web容器的标签变更并加载新配置,无需额外操作。
内容的提问来源于stack exchange,提问作者ironsand
相关产品推荐
相关产品推荐

