经过测试,chrome 进程仍然在 Docker 容器中的 Laravel Dusk

Posted

技术标签:

【中文标题】经过测试,chrome 进程仍然在 Docker 容器中的 Laravel Dusk【英文标题】:After tests chrome process remains Laravel Dusk in a Docker container 【发布时间】:2019-04-06 00:55:07 【问题描述】:

使用 Atlassian Bamboo 运行 Dusk 测试后,Chrome 进程仍然是“僵尸”。

下面是我的驱动代码初始化:

$options = (new ChromeOptions())
           ->addArguments(['--disable-gpu', '--headless', '--no-sandbox', ]);

$chrome = DesiredCapabilities::chrome()
          ->setCapability(ChromeOptions::CAPABILITY,$options)
          ->setCapability('acceptInsecureCerts', true);

return RemoteWebDriver::create('http://localhost:9515', $chrome);

我的composer.json

"require-dev":
   "barryvdh/laravel-ide-helper":"^2.5",
   "filp/whoops":"^2.0",
   "fzaninotto/faker":"^1.4",
   "laravel/dusk":"^4.0",
   "mockery/mockery":"^1.0",
   "nunomaduro/collision":"^2.0",
   "phpunit/phpunit":"^7.0",
   "squizlabs/php_codesniffer":"3.*"

以下截图证明僵尸进程:

top 命令的结果:

感谢回复。

【问题讨论】:

【参考方案1】:

经过挖掘,原因似乎是 Docker 容器上缺少标志:

必须--init标志附加到docker run

来自 Atlassian 官方文档: atlassian/bamboo-server

请注意,正确获取僵尸进程需要 --init 标志。

【讨论】:

以上是关于经过测试,chrome 进程仍然在 Docker 容器中的 Laravel Dusk的主要内容,如果未能解决你的问题,请参考以下文章

在docker中使用gdb调试程序

程序员必需知道的Chrome使用技巧(入门篇)

Salesforce:Javascript 不想重新渲染(经过 Chrome 测试)

WebDriverException:未知错误(“chrome 无法启动”和“无法创建 Chrome 进程”)

sh 这是一个在没有root权限的情况下编译caffe的脚本。它尚未经过广泛测试,但它仍然可以让事情变得更容易

Docker 容器在您的平台上为 Chrome 浏览器提供无二进制文件