容器未与 docker-compose 版本 2 链接

Containers are not linked with docker-compose version 2

我有一个 docker-compose 文件,我从版本 1 升级到版本 2。

它设置了一个带有 firefox 节点的简单 Selenium 集线器。

当我将它设置为版本 1 时,它可以正常启动。当我使用版本 2 设置它时,ff 容器 returns "Not linked with a running Hub container" 并退出。

根据我的研究和理解,容器之间的联系以某种方式受到影响。

有解决办法吗??我错过了什么吗??

version: '2'
services:
  hub:
    container_name: hub
    image: selenium/hub 
    ports:
      - "8080:4444" # HOST:CONTAINER
    expose:
      - "4444" 

  ff:
    container_name: ff
    image: selenium/node-firefox 
    links:
      - hub
    expose:
      - "5555" 

将环境变量添加到 Docker Compose 文件的 ff 部分(您可以删除 link):

ff:
  container_name: ff
  image: selenium/node-firefox
  environment:
    - HUB_PORT_4444_TCP_ADDR=hub
  expose:
    - "5555"

Compose 版本 2 使用不同的网络风格。来自 upgrading guide:

environment variables created by links have been deprecated for some time. In the new Docker network system, they have been removed. You should either connect directly to the appropriate hostname or set the relevant environment variable yourself, using the link hostname.

来自networking documentation

links are not required to enable services to communicate - by default, any service can reach any other service at that service’s name.

Selenium dockerfile 通过 ENV 变量使用版本 1 样式的网络。在 code 中,如果未设置该变量(Docker 曾经设置过),entry_point.sh 命令将退出。提供变量明确地解决了这个问题。

下面是为我工作的撰写文件

# To execute this docker-compose yml file use docker-compose -f <file_name> up
# Add the "-d" flag at the end for deattached execution

version: '2'
services:
  firefoxnode:
    image: selenium/node-firefox-debug
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - hub
    environment:
      HUB_HOST: hub
    ports:
      - "32772:5900"

  chromenode:
    image: selenium/node-chrome-debug
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - hub
    environment:
      HUB_HOST: hub
    ports:
      - "32773:5900"

  hub:
    image: selenium/hub
    ports:
      - "4444:4444"

我使用的命令:

 docker-compose -f .\docker-compose.yml up -d

来源:

https://github.com/SeleniumHQ/docker-selenium