如何通过docker-compose而不是使用docker启动selenium hub和一个链接节点?

时间:2016-04-06 16:45:51

标签: selenium docker docker-compose

我可以通过以下方式启动硒中心图像:

docker run --rm=true -P -p 4444:4444  --name selenium-hub selenium/hub

并通过以下方式添加firefox worker:

docker run --rm=true --link selenium-hub:hub selenium/node-firefox

继续http://localhost:4444/grid/console然后将显示网格就好了。

我不希望每次都使用泊坞窗,但通过docker-compose进行相同设置。

因此,我认为我可以在docker-compose.yml

中执行此操作
selenium_hub:
    image: selenium/hub
    ports: ["4444:4444"]
    links:
        - selenium_firefox_worker
selenium_firefox_worker:
    image: selenium/node-firefox

然而在跑完docker-compose up后,我收到了消息:

selenium_firefox_node_1 | Not linked with a running Hub container
selenium_firefox_node_1 exited with code 1

因此网格不显示任何节点。

我认为我可能正在以错误的顺序进行链接,甚至是:

selenium_hub:
    image: selenium/hub
    ports: ["4444:4444"]
selenium_firefox_node:
    image: selenium/node-firefox
    links:
        - selenium_hub

产生相同的错误。

我做错了什么?

3 个答案:

答案 0 :(得分:7)

作为旁注,如果使用docker-compose版本2格式,则必须指定几个env变量,否则节点将不会连接到集线器:

version: '2'
services:
    hub:
        image: selenium/hub
        ports:
            - "4444:4444"

    firefox:
        image: selenium/node-firefox
        environment:
            HUB_PORT_4444_TCP_ADDR: hub
            HUB_PORT_4444_TCP_PORT: 4444
        links:
            - hub

现金: Containers are not linked with docker-compose version 2

答案 1 :(得分:5)

Stumbling across this tutorial,提供了这种语法。虽然它与我的一种方法相似,但它确实有效。

gameData$TeamAScore <- ifelse(
  is.nan(gameData$TeamAScore),
  getTeamAScore(gameData$TeamA,gameData$TeamB,gameDate=gameData$Date),
  gameData$TeamAScore
)

它似乎与命名有关,但我不确定。

答案 2 :(得分:3)

selenium_hub:
    image: selenium/hub
    ports: ["4444:4444"]
selenium_firefox_node:
    image: selenium/node-firefox
    links:
        - "selenium_hub:hub"

虽然k0pernikus' answer确实有效,但我只是想详细说明它失败的原因。

节点容器希望连接到一个可以简单解析的集线器:

hub

而不是在他们的例子中,它可以解析为:

selenium_hub