【问题标题】:How do I link and scale multiple docker containers?如何链接和扩展多个 docker 容器?
【发布时间】:2016-06-07 17:22:31
【问题描述】:

我想使用 Selenium Grid 的 Docker 映像来并行执行测试。

为此,我希望将每个测试套件分派到不同的浏览器节点。每个节点都必须与自己的 dockerized 服务器配对,以便测试可以运行。所以我的问题是链接容器对的最佳方式是什么?

有没有一种方法可以轻松扩展服务器-节点对,或许可以使用 Docker Compose?

我对这一切都很陌生,所以如果我想要达到的目标不是很清楚,请道歉。

【问题讨论】:

    标签: selenium docker automated-tests docker-compose selenium-grid


    【解决方案1】:

    我不是 100% 清楚是否需要将每个测试套件分派到不同的节点,但听起来像这样应该满足您的要求:

    hub:
      image: selenium/hub:2.53.0
      ports:
        - "4444:4444"
    firefox:
      image: selenium/node-chrome:2.53.0
      links:
        - hub
    chrome:
      image: selenium/node-chrome:2.53.0
      links:
        - hub
    

    如果您将其保存在一个目录中为docker-compose.yml,然后将cd 保存到该目录中,您可以执行以下操作:

    docker-compose up -d
    docker-compose scale firefox=3 chrome=3
    

    这将为每个浏览器提供 3 个节点,并且 selenium 集线器将处理将您的测试分配给节点,以便它们一次只运行一组测试。

    然后,您可以告诉所有测试使用远程网络驱动程序,并且您可以控制每组测试使用哪个浏览器:

    from selenium import webdriver
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    
    driver = webdriver.Remote(
       command_executor='http://127.0.0.1:4444/wd/hub',
       desired_capabilities=DesiredCapabilities.CHROME)
    driver.get("http://www.seleniumhq.org/")
    

    显然你需要修改它以使用你想要的语言来编写测试。我只是在 python 中发布了一个快速示例来帮助你继续,因为你没有指定一种语言&这是我最熟悉的.

    编辑:满足您实际要求的可能方式:

    hub:
      image: selenium/hub:2.53.0
      links: 
        - app
    firefox:
      image: selenium/node-chrome:2.53.0
      links:
        - hub
    chrome:
      image: selenium/node-chrome:2.53.0
      links:
        - hub
    test:
      image: your/testimage
      links:
        - hub
    app:
      image: your/appimage
    

    然后您可以通过运行(在 docker-compose.yml 所在的目录中)启动整个设置的多个实例:

    docker-compose --project-name <identifier> up -d
    

    如果您将&lt;identifier&gt; 更改为每个实例的唯一值,那么您可以同时运行多个实例。您可能还想将volume 添加到您的测试容器中,以便您可以保留结果/日志/屏幕截图,但我对设置的了解还不够,无法告诉您如何操作。

    我会质疑在这种情况下您是否需要 selenium-hub,但它确实增加了一些便利,因此您可能仍希望使用它。

    【讨论】:

    • 感谢您的回复!但是,我想使用 Docker Compose 创建一个可扩展的一次性环境。每个实例将包含两个以上的容器,因此我希望有一种方法可以启动整个基础架构的多个实例,而不是单独扩展节点。
    • 我做了一个编辑,希望能解释你如何使用 docker-compose 来实现这一点。不确定您是否已经解决了您的问题,但如果没有,我希望它会有所帮助。
    【解决方案2】:
    docker-compose up --scale firefox=3 -d
    
    docker-compose up --scale chrome=3 -d
    

    试试这个肯定有用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      • 2018-04-18
      相关资源
      最近更新 更多