将Selenium Firefox Node主机指定为Docker容器

时间:2018-03-22 16:14:03

标签: selenium docker docker-compose docker-swarm

我正在尝试在Docker Swarm中设置Selenium。这是一个标准设置,因此集线器+复制的Firefox节点。由于我为Swarm的不同组件使用不同的网络,我遇到了网络问题。

虽然Firefox节点IP可以说是10.0.1.19,但它会以172.19.0.4的形式报告给Selenium Hub。集线器无法连接到此IP,因为它位于为Selenium创建的网络之外,并且节点会超时。

我发现我可以设置Firefox容器的hostportremoteHost参数,但由于一切都是动态的,我无法对这些值进行硬编码。因此,我想在Firefox节点定义中的docker-compose.yml文件中执行类似的操作:

    environment:
      - SE_OPTS="-host $$HOSTNAME -port 5555 -remoteHost http://$$HOSTNAME:5555"

如果可以使用$HOSTNAME变量,这将立即解决我的问题。不幸的是,在检查Hub日志时,我看到:

java.security.InvalidParameterException: Error: Not a correct url to register a remote : http://$HOSTNAME:5555"

显然,在将参数发送到集线器之前,参数不会更改为其值。我想发送Firefox节点的正确IP或主机名。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

解决方案是编辑Firefox Docker入口点文件并手动添加

export MYIP="$(cat /etc/hosts | grep $HOSTNAME | sed 's/\s.*$//' | tr -d '\n')" 
REMOTE_HOST="http://$MYIP:5555" 
REMOTE_HOST_PARAM="-remoteHost http://$MYIP:5555"

这样,节点总是根据/etc/hosts

中找到的IP发送正确的IP