我有以下Dockerfile,它将构建一个Selenium服务器
FROM selenium/standalone-firefox:3.4.0-chromium
FROM selenium/standalone-chrome
USER root
ENV NODE_ENV test
RUN mkdir -p /usr/local/cdt-tests/csv-data
COPY ./csv-data /usr/local/cdt-tests/csv-data
USER seluser
显然两个FROM语句不正确 =>如何创建一个Selenium服务器容器,其中包含用于Selenium的Chrome驱动程序和Firefox驱动程序。据我所知,selenium/standalone-firefox:3.4.0-chromium
图像仅适用于Firefox。
答案 0 :(得分:1)
你不能合并两个像这样的docker文件。您可以使用一个作为docker文件的基础,然后将另一个重要位复制到您的文件夹中。
但是你不应该真的需要。有multiple browsers and drivers included的图片。或者更好的是,您可以使用hub image和some driver图片设置网格。
您甚至可以考虑使用Serenity等库或Katalon等产品,这两种产品都可以为您完成所有操作。甚至还有一个Katalon docker image设计用于CI:它的命令行+仅限无头,但大多数CI驱动的回归测试都需要这些。
答案 1 :(得分:1)
没有像你建议的那样为Dockerfiles设置继承类型。
要实现组合构建,您需要找到FROM
和standalone-firefox
的常见standalone-chrome
祖先,即selenium/node-base
并创建您自己的Docker文件以重新应用所有selenium/standalone-chrome
适用的构建步骤。然后,每当Selenium更新其构建时,保持同步。
Dockerfile层次结构:
selenium/node-base
/ \
selenium/node-chrome selenium/node-firefox
| |
selenium/standalone-chrome selenium/standalone-firefox
问题是这些构建被设计为单独的,因此图像使用的变量和设置存在显着重叠,您还需要在自定义构建中取消以控制和运行chrome和firefox同时。您可能最终必须从头开始做所有事情。
在Selenium grid后面运行单个grid hub节点是从单个端点进行多浏览器测试的标准方法。您可以在Docker中运行Firefox,Chrome或Phantom JS个节点,也可以从其他任何位置连接standard nodes。
您可以随时在单独的端口上运行Chrome和Firefox的容器,并将相同的测试套件指向不同的端口,如果为每个浏览器运行一些测试的简单情况设置网格是很多工作。