Docker环境下Flask应用无法远程连接Selenium Grid问题求助
问题根因
Docker容器默认拥有独立的网络命名空间,web容器内的localhost指向容器自身,而非宿主机或其他容器,因此无法通过localhost:4444访问到Selenium Hub服务。
解决方案
同一个docker-compose.yml中定义的所有服务默认会加入同一内部网桥网络,可直接通过服务名实现内网DNS解析通信。
- 修改Flask应用中Selenium Remote的连接地址,将
driver = webdriver.Remote(command_executor="http://localhost:4444")
修改为
driver = webdriver.Remote(command_executor="http://selenium-hub:4444")
注:
selenium-hub是你配置中Selenium Hub服务的名称,同时你也指定了对应容器名为此值,可直接作为内部通信的域名使用。
可选验证步骤
进入web容器执行以下命令,确认网络连通性:
curl http://selenium-hub:4444
正常返回Hub页面相关内容即说明内网通信正常。
补充说明:你当前配置中Selenium Hub的4444端口映射仅用于宿主机访问,容器之间内网通信无需依赖端口映射。
内容的提问来源于stack exchange,提问作者Asmith9555
相关产品推荐
相关产品推荐

