2017-02-28 130 views
2

我有一种情况,我必须在不同的主机上使用node/chrome和selenium/hub镜像。但问题是虽然我将它们连接起来,如下图所示ansible作用:不同主机中的Selenium节点/ chrome docker镜像和selenium/hub docker镜像

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

它不获取链接,或者换句话说集线器没有发现的节点。请让我知道,只有当集线器和节点位于同一主机内时,链接才能工作。

回答

2

下面是最后为我工作的。请注意,SE_OPTS对于节点能够成功链接到不同主机上的集线器是必需的。

- 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" 
3

链接不跨机器工作。您可以指定IP地址/主机名并通过它连接,也可以使用Docker群集模式来部署容器 - 这可以让您执行与链接非常接近的操作(它会在群集节点之间建立网状网络,所以服务可以找到对方)。

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

+1

谢谢,我已成功地解决了这个按照您的建议在这里张贴的代码,如果它会帮助任何人: – trial999