仅当chrome无头时才可以在docker计算机上运行chrome。不幸的是,无头chrome无法忽略证书错误,这会阻止我的测试运行。
我正在尝试在Docker容器上运行一个已经正常工作的NodeJS e2e测试环境。大多数测试都通过了,但是当站点需要证书时,就无法访问它。在无头镀铬上,我可以忽略认证错误。 容器上安装的基本docker映像是Node:8
{ browserName:“ chrome”, chromeOptions:{ 二进制文件:puppeteer.executablePath(), args:[ '--lang = zh-CN','-headless','-no-sandbox','-ignore-certificate-errors' ] } }
预期结果是要么在docker容器上使用gui运行chrome,要么以某种方式忽略无头chrome中的服务器证书错误。
答案 0 :(得分:1)
使用Xvfb。这将使您可以将Chrome与GUI结合使用。
这个想法很简单:您使用虚拟桌面。在独立VM上配置多个桌面/显示器需要花费一些精力。使用Docker,这很简单。
一些例子:
http://www.mattzeunert.com/2018/07/21/running-headful-chrome-on-ubuntu-server.html
https://medium.com/dot-debug/running-chrome-in-a-docker-container-a55e7f4da4a8
答案 1 :(得分:0)
另一种方法(由Nils De Moor描述here)是让docker容器连接到本地计算机的X服务器。
说您的IP地址是192.168.0.2
。
您可以使用192.168.0.2:10
在端口6010(与显示socat
对应)上为X显示器建立到您的隧道。为了安全起见,range
参数要求socat
仅接受来自您计算机IP地址的连接。
socat TCP-LISTEN:6010,reuseaddr,fork,range=192.168.0.2/32 UNIX-CLIENT:\"$DISPLAY\" &
现在,您可以在启动时使用DISPLAY
在docker容器内设置-e
变量。
docker run -e DISPLAY=192.168.0.2:10 gns3/xeyes
在chrome
的情况下,链接文章中描述了更多的复杂性,因为chrome需要更多特权(即添加--privileged
)