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

同一Docker网络下某容器退出后,如何自动停止指定其他关联容器?

实现方案推荐

下面提供3种无需在Python容器内安装完整Docker环境的实现方式,按实现成本从低到高排序:

方案1:Python脚本直接调用Selenium自带的关闭接口(最推荐)

Selenium Server默认提供了远程关闭的API,不需要任何Docker相关的依赖,仅需要在你现有的Python脚本末尾追加代码即可实现需求:

  • 在所有初始化逻辑执行完成后,向Selenium服务的关闭接口发送POST请求:
import requests
# 这里的selenium替换为你docker-compose中Selenium服务的服务名
requests.post("http://selenium:4444/wd/hub/shutdown")

请求发送成功后Selenium容器会自动终止,仅保留WordPress容器运行。

方案2:使用外部Shell启动脚本控制流程

如果不想修改现有Python代码,可以通过调整启动流程实现,完全不需要改动容器内部逻辑:

  1. 新建start.sh启动脚本,内容如下:
#!/bin/bash
# 后台启动WordPress和Selenium服务
docker-compose up -d wordpress selenium
# 运行一次性Python容器执行初始化脚本,执行完成后自动删除容器
docker-compose run --rm python
# 脚本执行完成后停止Selenium服务
docker-compose stop selenium
  1. 给脚本添加执行权限:chmod +x start.sh
  2. 后续直接执行./start.sh即可实现预期流程。

方案3:挂载Docker套接字调用容器API

如果后续还有其他容器控制需求,可以选择挂载宿主机Docker套接字的方式,不需要在容器内安装完整Docker:

  1. 在docker-compose.yml的Python服务配置中添加挂载配置:
services:
  python:
    # 其他原有配置保留
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
  1. 在Python容器的依赖中添加Docker SDK:pip install docker
  2. 在Python脚本末尾添加停止Selenium容器的逻辑:
import docker
client = docker.from_env()
# 这里的selenium替换为你docker-compose中Selenium服务的服务名
client.containers.get("selenium").stop()

内容的提问来源于stack exchange,提问作者Navjot Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:45:03