2017-02-28 202 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