将主机端口上的应用程序 运行 公开给 Selenoid

Expose application running on host port to Selenoid

我正在 运行 宁宁一个 Selenoid 应用程序测试自动化脚本,并想 运行 这个脚本针对本地应用程序。但是,我找不到如何将我的本地应用程序(端口 8787 上的 运行ning)公开给 Selenoid。我发现 the following thread 讨论了类似的问题,但它并没有解决我的问题。链接的线程描述了使用主机的 ip 地址。但是,我想让我的测试系统独立。每个系统的host ip地址不一样,很难独立获取系统。

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

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 容器没有通过相同的选项。

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

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

我终于意识到,是的,我 运行 的应用程序实际上 运行 在 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"