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

时间:2020-03-10 15:22:37

标签: docker selenium docker-compose selenoid

我正在运行Selenoid应用程序测试自动化脚本,并且想针对本地应用程序运行此脚本。但是,我找不到如何将本地应用程序(在端口8787上运行)公开给Selenoid。我发现the following thread在讨论类似的问题,但是并不能解决我的问题。链接的线程描述了使用主机的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文件中的配置,传递给远程驱动程序的功能或还有其他方法吗?)?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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"