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

Docker depends_on顺序失效:Selenium组件启动顺序不符合预期

解决Docker Compose提前启动测试代码的问题

看起来你踩了Docker Compose并行启动的坑啦!默认情况下Compose会同时拉起所有服务,哪怕你配置了依赖,单纯的depends_on也只会等容器启动,不会等服务真正就绪(比如Selenium Hub的4444端口能正常接收请求)。这就是为什么测试代码先跑起来,而Selenium组件还没准备好的原因。

修正后的docker-compose.yml配置

version: '3'
services:
  hub:
    image: selenium/hub:latest
    networks:
      - robottestsnw
    ports:
      - "4444:4444"
    # 健康检查:确认Hub服务真正就绪
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:4444/wd/hub/status"]
      interval: 5s       # 每5秒检查一次
      timeout: 10s       # 超时时间10秒
      retries: 5         # 最多重试5次

  chrome:
    image: selenium/node-chrome:latest
    networks:
      - robottestsnw
    # 依赖Hub的健康状态,等Hub就绪后再启动
    depends_on:
      hub:
        condition: service_healthy
    # 配置节点连接Hub的环境变量
    environment:
      - SE_EVENT_BUS_HOST=hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443

  firefox:
    image: selenium/node-firefox:latest
    networks:
      - robottestsnw
    depends_on:
      hub:
        condition: service_healthy
    environment:
      - SE_EVENT_BUS_HOST=hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443

  test-runner:
    build: ./your-test-dir  # 替换成你的测试代码Dockerfile所在目录
    networks:
      - robottestsnw
    # 测试服务必须等Hub就绪、浏览器节点启动后再运行
    depends_on:
      hub:
        condition: service_healthy
      chrome:
        condition: service_started
      firefox:
        condition: service_started
    # 给测试代码传递Hub的访问地址
    environment:
      - SELENIUM_HUB_URL=http://hub:4444/wd/hub

关键配置说明

  • 健康检查(healthcheck):给Selenium Hub加上这个配置,Compose会等待Hub的/wd/hub/status接口返回成功后,才认为Hub服务就绪,而不是仅仅容器启动。
  • 带条件的depends_on:
    • Chrome/Firefox节点依赖Hub的service_healthy状态,确保节点连接Hub时Hub已经可用
    • 测试服务依赖Hub的service_healthy和节点的service_started,保证测试代码运行时,所有Selenium组件都准备完毕
  • 环境变量:浏览器节点需要SE_EVENT_BUS_*变量来正确连接到Hub,测试代码通过SELENIUM_HUB_URL访问Hub的内部网络地址

执行命令

现在再运行这个命令,就能按你期望的顺序启动服务了:

docker-compose up --build

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:19:26