Selenium node/chrome docker 图像和 selenium/hub docker 图像在不同的主机

Selenium node/chrome docker image and selenium/hub docker image in different host machines

我有一种情况,我必须在不同的主机上使用 node/chrome 和 selenium/hub 图像。然而问题是,尽管我将它们链接到以下 ansible 角色中:

- name: seleniumchromenode container
  docker:
    name: seleniumhubchromenode
    image: "{{ seleniumchromenode_image }}"
    state: "{{ 'started' }}"
    pull: always
    restart_policy: always
    links: seleniumhub:hub

它没有链接,或者换句话说,集线器没有发现节点。请让我知道链接是否仅在集线器和节点位于同一主机内时才有效。

链接不能跨机器使用。您可以指定 IP address/hostname 并让它通过该 IP 连接,或者您可以使用 Docker Swarm Mode 来部署您的容器 - 这让您可以做一些非常接近链接的事情(它建立了一个网状网络跨集群节点,因此服务可以找到彼此)。

最简单:只需在 Ansible 中传递主机名即可。

以下是最终对我有用的方法。请注意,SE_OPTS 是节点能够 link 成功连接到位于不同主机上的集线器所必需的。

- name: seleniumchromenode container
  docker_container:
    name: seleniumhubchromenode
    image: "{{ seleniumchromenode_image }}"
    state: "{{ 'started' }}"
    pull: true
    restart_policy: always
    exposed_ports:
      - "{{seleniumnode_port}}"
    published_ports:
      - "{{seleniumnode_port}}:{{seleniumnode_port}}"
    env:
      HUB_PORT_4444_TCP_ADDR: "{{seleniumhub_host}}"
      HUB_PORT_4444_TCP_PORT: "{{seleniumhub_port}}"
      SE_OPTS: "-host {{seleniumnode_host}} -port {{seleniumnode_port}}"
      NODE_MAX_INSTANCES: "5"
      NODE_MAX_SESSION: "5"