适用于AWS和Selenium Grid的Docker - 拒绝连接/无主机路由(主机无法访问)

时间:2017-05-09 15:00:44

标签: amazon-web-services docker docker-compose selenium-grid amazon-cloudformation

我想要实现的是使用Selenium Grid的可扩展和按需测试基础架构。

我可以把所有事情都搞定,但我最终得到的是:

enter image description here

以下是所有部分:

  1. Docker for AWS(CloudFormation Stack)
  2. docker-selenium
  3. Docker撰写文件(下方)
  4. 使用的“暗示”软件是:

    Docker swarm

    Stacks

    这是我能做到的:

    1. 创建,登录并ping所有主机&堆栈中的节点遵循以下准则:deploy Docker for AWS

    2. 通过运行:

      在此查询结束时使用撰写文件进行部署
      docker stack deploy -c docker-compose.yml grid
      
    3. 使用AWS自动提供的面向公众的DNS名称查看Selenium Grid控制台(成功创建堆栈后)。以下是有关该主题的有用条目:Docker Swarm Mode

    4. 以下是我正在使用的撰写文件的内容:

      version: '3'
      
      services:
        hub:
          image: selenium/hub:3.4.0-chromium
          ports:
            - 4444:4444
          networks:
            - selenium
          environment:
            - JAVA_OPTS=-Xmx1024m
          deploy:
            update_config:
              parallelism: 1
              delay: 10s
            placement:
              constraints: [node.role == manager]
      
        chrome:
          image: selenium/node-chrome:3.4.0-chromium  
          networks:
            - selenium
          depends_on:
            - hub
          environment:
            - HUB_PORT_4444_TCP_ADDR=hub
            - HUB_PORT_4444_TCP_PORT=4444
          deploy:
          placement:
            constraints: [node.role == worker]
      
        firefox:
          image: selenium/node-firefox:3.4.0-chromium
          networks:
            - selenium
          depends_on:
            - hub
          environment:
            - HUB_PORT_4444_TCP_ADDR=hub
            - HUB_PORT_4444_TCP_PORT=4444
          deploy:
          placement:
            constraints: [node.role == worker]
      
      networks:
        selenium:
      

      非常感谢有关此问题的任何指导。谢谢。

      我也试过在群体中打开端口:

      swarm-exec docker service update --publish-add 5555:5555 gird
      

1 个答案:

答案 0 :(得分:0)

Google快速推出https://github.com/SeleniumHQ/docker-selenium/issues/255。您需要将以下内容添加到Chrome和Firefox节点:

entrypoint: bash -c 'SE_OPTS="-host $$HOSTNAME" /opt/bin/entry_point.sh'

这是因为容器在Swarm模式下有两个IP地址,并且节点正在拾取错误的地址并将其通告给集线器。此更改将使节点通告其主机名,以便集线器可以通过DNS找到节点。