【发布时间】:2016-12-31 16:03:40
【问题描述】:
我正在尝试使用 Docker 和 Selenium Grid 设置一个自动化测试平台。 在下图中,您可以看到我正在使用的结构。 最上面是在 Compute Engine 上运行的 ubuntu 服务器。 左边是一个运行 ubuntu 14.04 的 docker 容器。 该容器使用 Google App Engine 在 localhost:8080 上运行我们的项目。 右边是 Selenium Hub,有两个节点在端口 4444 上运行。
从主机到 docker 以及到 selenium 集线器都有端口转发。分别在 32772 和 32768 上。
在运行我的 Selenium 测试时,我将它们发送到集线器,集线器又将在 docker 的本地主机上运行测试。 我的问题是,当我告诉集线器在 172.17.0.2:8080 上运行测试时,它会打开启动屏幕,但无法提交任何表单。 当我提交表单时,文本区域会被清除。就像页面以某种方式刷新一样。奇怪的是,当我像 xx.xx.xx.xx:32772 这样告诉集线器使用主机的外部 ip 和 docker 的端口时,它确实有效。 它具有所有功能。但是出于性能和自动化原因,我想在内部 IP 地址上运行它。
任何帮助将不胜感激。
泰恩
【问题讨论】:
-
您是如何将容器端口绑定到主机端口的?
-
我已经尝试了两种方法,将它们映射到我选择的端口,例如 'docker run -p 8888:8080 myimage' ,但在这种情况下,它是通过自动端口转发完成的。所以只有 -p 8080 标签。
-
如何提供内容?你在使用 nginx 吗?如果是这样的话。配置是什么?
-
如果您的意思是托管在什么网站上,它就是 Google App Engine SDK。
-
我问是因为主机 ip 可能对您的应用程序而不是基础设施很重要。例如,如果您在 nginx 中定义主机名,它不会响应该特定请求的其他主机名。
标签: selenium networking docker ip phpunit