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

如何在Docker容器中运行Python版Selenium?连接Hub报错如何解决?

问题核心原因及修复方案

1. 连接地址配置错误

你在app容器内使用http://localhost:4444/wd/hub访问Selenium Hub是错误的:容器内的localhost指向的是app容器自身,而非宿主机或者Selenium Hub服务所在的容器。

Docker Compose会自动为同个配置文件下的所有服务创建内部网络,你可以直接使用服务名作为域名互相访问,所以将驱动初始化代码中的连接地址修改为Hub服务的名称即可:

caps = {'browserName': os.getenv('BROWSER', 'chrome')}
self.driver = webdriver.Remote(command_executor='http://hub:4444/wd/hub',
                               desired_capabilities=caps)

2. 服务启动时序问题

depends_on只能控制容器的启动顺序,无法保证Selenium Hub服务完全初始化完成后再启动app容器。如果修改地址后仍然偶发连接报错,可以给app的启动逻辑添加等待机制:

  • 方式一:在Python代码中给驱动初始化添加重试逻辑,捕获连接错误后间隔几秒再重试,最多重试3-5次
  • 方式二:修改docker-compose中app的启动命令,先等待hub的4444端口通了再运行main.py,示例:
app:
  build:
    context: ./
  volumes:
    - ./app:/app
  command: sh -c "wget -q --spider http://hub:4444/wd/hub/status && python main.py"
  depends_on:
    - chrome

冗余配置说明

你Dockerfile中的EXPOSE 4444是无效配置,app服务不需要监听4444端口,可以直接删除,不影响运行。

修改完成后重新执行docker-compose build && docker-compose up即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 22:45:05