docker-compose使用host网络模式时无法向selenium/hub注册多个节点
问题原因
network_mode: host 模式下所有容器共享宿主机的端口资源,Selenium Node容器默认启动时都会尝试绑定5555端口,启动第二个节点时就会出现端口占用冲突。
解决方案
给每个节点容器通过环境变量指定不同的服务端口即可,Selenium官方镜像支持通过SE_NODE_PORT参数自定义节点启动端口。
修改后的docker-compose配置如下:
services: hub: image: selenium/hub network_mode: "host" environment: GRID_MAX_SESSION: 16 GRID_BROWSER_TIMEOUT: 3000 GRID_TIMEOUT: 3000 chrome: image: selenium/node-chrome container_name: web-automation_chrome depends_on: - hub network_mode: "host" environment: HUB_PORT_4444_TCP_ADDR: localhost HUB_PORT_4444_TCP_PORT: 4444 SE_NODE_PORT: 5555 # chrome节点指定用5555端口 volumes: - /dev/shm:/dev/shm firefox: image: selenium/node-firefox container_name: web-automation_firefox depends_on: - hub network_mode: "host" environment: HUB_PORT_4444_TCP_ADDR: localhost HUB_PORT_4444_TCP_PORT: 4444 SE_NODE_PORT: 5556 # firefox节点指定用5556端口,和其他节点不冲突即可 volumes: - /dev/shm:/dev/shm
补充说明
如果后续需要新增更多节点,只需要依次给每个节点指定不同的SE_NODE_PORT值,确保没有端口重复即可,端口范围只要是宿主机未被占用的端口都可以使用。
内容的提问来源于stack exchange,提问作者m0tt
相关产品推荐
相关产品推荐

