0

我正在运行 Selenoid 应用程序测试自动化脚本,并希望针对本地应用程序运行此脚本。但是,我找不到如何将我的本地应用程序(在 port 上运行8787)暴露给 Selenoid。我发现以下线程讨论了一个类似的问题,但它并没有解决我的问题。链接的线程描述使用主机的 IP 地址。但是,我想让我的测试系统独立。每个系统的主机ip地址都不一样,很难被系统单独检索到。

我已经尝试将公开字段添加到我的 docker compose 文件中:

version: '3'
services:
  selenoid:
    network_mode: bridge
    image: aerokube/selenoid:latest-release
    volumes:
      - "${PWD}/run:/etc/selenoid"
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "${PWD}/run/video:/opt/selenoid/video"
      - "${PWD}/run/logs:/opt/selenoid/logs"
    environment:
      - OVERRIDE_VIDEO_OUTPUT_DIR=${PWD}/run/video
      - TZ=Europe/Amsterdam
    command: ["-conf", "/etc/selenoid/browsers.json", "-video-output-dir", "/opt/selenoid/video", "-log-output-dir", "/opt/selenoid/logs"]
    ports:
      - "4444:4444"
    expose:
      - "8787"

但是,这不起作用,因为 Selenoid 创建的 docker 容器没有通过相同的选项。

有没有办法以8787独立于系统/操作系统的方式将我的主机端口公开给我的 Selenoid 容器(通过docker-compose.yml文件中的配置、传递给远程驱动程序的能力或任何其他方式?)?

4

2 回答 2

1

Selenoid 在标准 Docker 容器中运行浏览器,因此任何适用于 Docker 的东西都适用于 Selenoid 浏览器。Docker 是为所有交互部分都打包到容器中的情况而创建的,在这种情况下,您的服务上有旧版 Docker 链接或现代 Docker 自定义网络。如果您仍想在主机上运行您的应用程序而不将其打包到容器中,您必须使用主机 IP 或在某些平台上 Docker 提供特定的域名,例如docker.for.mac.localhost在 Mac 上。

于 2020-03-11T08:08:24.593 回答
1

我终于意识到,是的,我运行的应用程序实际上是在 Docker 容器中运行的,因此链接它们就像将 Selenoid 和应用程序放在同一个 Docker 网络中一样简单。决赛docker-compose.yml如下:

version: '3'
networks:
  my_network_name:
    external:
      name: my_network_name # This assumes network is already created
services:
  selenoid:
    networks:
      my_network_name: null
    image: aerokube/selenoid:latest-release
    volumes:
      - "${PWD}/run:/etc/selenoid"
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "${PWD}/run/video:/opt/selenoid/video"
      - "${PWD}/run/logs:/opt/selenoid/logs"
    environment:
      - OVERRIDE_VIDEO_OUTPUT_DIR=${PWD}/run/video
      - TZ=Europe/Amsterdam
    command: ["-container-network", "my_network_name", "-conf", "/etc/selenoid/browsers.json", "-video-output-dir", "/opt/selenoid/video", "-log-output-dir", "/opt/selenoid/logs"]
    ports:
      - "4444:4444"
    expose:
      - "8787"
于 2020-03-11T09:58:55.967 回答