gpt4 book ai didi

selenium - 为什么此行必须与Selenium和Docker Swarm一起使用?

转载 作者:行者123 更新时间:2023-12-02 21:17:13 26 4
gpt4 key购买 nike

Kubernetes Selenium example之后,我使Grid正常工作。但是,我宁愿使用Docker Swarm,因此我将k8s文件转换为docker-compose.yml。

version: '3.6'

services:
hub:
image: selenium/hub:3.11
ports:
- "4444:4444"

chrome:
image: selenium/node-chrome:3.11
environment:
HUB_PORT_4444_TCP_ADDR: hub
HUB_PORT_4444_TCP_PORT: 4444

firefox:
image: selenium/node-firefox:3.11
environment:
HUB_PORT_4444_TCP_ADDR: hub
HUB_PORT_4444_TCP_PORT: 4444

堆栈已部署,所有容器都在运行。但是,我只能访问Grid的主页( http://localhost:4444)。如果我尝试访问控制台( http://localhost:4444/grid/console),则页面永远不会加载,实际上,使用浏览器的dev工具进行检查时,“网络”标签中甚至没有对此类资源的请求。

在不同的计算机上尝试过相同的内容,所以发生了一些奇怪的事情。

在搜索了 selenium grid docker swarm几分钟后,我发现了一些过时的教程,这些教程还将 entrypoint: bash -c 'SE_OPTS="-host $$HOSTNAME" /opt/bin/entry_point.sh'添加到了chrome和firefox容器中。我也是,一切都开始正常工作,就像在Kubernetes中一样。

所以我的问题是,为什么必须要有该行才能使网格正常工作。为什么k8不需要它?

最佳答案

您可以在其他StackOverflow question中找到说明。

简而言之:

This is because the containers have two IP addresses in Swarm Mode and the nodes are picking up the wrong address and advertising that to the hub. This change will have the nodes advertise their hostname so the hub can find the nodes by DNS instead.



在Kubernetes中,一个容器中的一个容器只有一个IP地址,这就是为什么您不需要设置该变量的原因,您的应用程序总是选择正确的IP。

关于selenium - 为什么此行必须与Selenium和Docker Swarm一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49750742/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com