You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

当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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 00:12:55