ins*_*itu 37 selenium docker docker-compose
直到最近,当一个人正在docker-compose up为一堆容器做准备并且一个已启动的容器停止时,所有容器都被停止了.自https://github.com/docker/compose/issues/741以来不再是这种情况了,这对我们来说真的很烦人:我们使用docker-compose来运行selenium测试,这意味着启动应用服务器,启动selenium hub +节点,启动测试驱动程序,然后在测试驱动程序停止时退出.
有没有办法恢复旧的行为?
Met*_*orm 69
您可以使用:
docker-compose up --abort-on-container-exit
如果您的一个容器停止,将停止所有容器
在docker compose文件中,将测试驱动程序容器设置为依赖于其他容器(带有depends_on参数)。您的docker compose文件应如下所示:
services:
application_server:
...
selenium:
...
test_driver:
entry_point: YOUR_TEST_COMMAND
depends_on:
- application_server
- selenium
Run Code Online (Sandbox Code Playgroud)
使用这种方式表示依赖关系时,运行:
docker-compose run test_driver
Run Code Online (Sandbox Code Playgroud)
test_driver容器完成后,所有其他容器将关闭。
此解决方案是docker-compose up --abort-on-container-exit 答案的替代方案。如果其他任何容器退出,后者还将关闭所有其他容器(不仅仅是测试驱动程序)。这取决于您的用例,哪一种比较合适。
您是否尝试过在您提供的链接上建议的工作?
假设您的测试脚本看起来与此类似:
$ docker-compose rm -f
$ docker-compose build
$ docker-compose up --timeout 1 --no-build
Run Code Online (Sandbox Code Playgroud)
当应用程序测试结束时,compose将退出并且测试结束.
在这种情况下,使用新docker-compose版本,将测试容器更改为具有默认的no-op命令(类似echo或true),并更改测试脚本,如下所示:
$ docker-compose rm -f
$ docker-compose build
$ docker-compose up --timeout 1 --no-build -d
$ docker-compose run tests test_command...
$ docker-compose stop
Run Code Online (Sandbox Code Playgroud)
使用run可以从测试运行中获取退出状态,并且只能看到测试的输出(不是所有依赖项).
如果这是不可接受的,您可以参考Docker Remote API并观察stop容器的事件并对其进行操作.
一个示例用法是编写这个docker-gen工具,golang其中监视容器启动事件,以自动重新生成配置文件.
| 归档时间: |
|
| 查看次数: |
12083 次 |
| 最近记录: |