Windows Docker容器上的Chrome无法正常工作

时间:2018-10-23 12:03:18

标签: windows google-chrome docker angular-cli chocolatey

我正在尝试在Docker容器上运行Google Chrome。 该docker容器基于microsoft/windowsservercore:ltsc2016。我想使用docker容器构建AngularCLI-App。因此,我需要在Google Chrome浏览器中运行测试(带有:--headless标志)。

使用Chrome运行测试对我来说是一项新功能,因为我的Angular-App不是基于AngularCLI结构,而是使用PhantomJS执行测试。

我已经更新了整个Angular-Project,使其适合AngularCLI结构,因为我希望它们基于标准的Angular方式。因此,我尝试使用Chrome代替PhantomJS。

此外,我正在使用Chocolatey安装软件包。

这是我缩小的dockerfile:

FROM microsoft/windowsservercore:ltsc2016

RUN choco install -y googlechrome && \
    choco install -y nodejs --version 8.11.3

# npm konfiguration um den dvelop-npm ProGet feed nutzen zu können
RUN npm install -g @angular/cli

我可以使用完整的dockerfile构建AngularApp,但是我的测试无法正常工作。在启动Chrome的过程中出现错误,提示chrome.dll中找不到一个chrome模块。

完整错误:

Project name: dapi-provider
22 10 2018 11:16:09.393:INFO [karma]: Karma v3.0.0 server started at http://0.0.0.0:9876/
22 10 2018 11:16:09.396:INFO [launcher]: Launching browser ChromeHeadlessNoSandbox with unlimited concurrency
22 10 2018 11:16:09.410:INFO [launcher]: Starting browser Chrome
22 10 2018 11:16:10.238:ERROR [launcher]: Cannot start Chrome
        [1022/111609.595:ERROR:main_dll_loader_win.cc(134)] Failed to load Chrome DLL from C:\Program Files (x86)\Google\Chrome\Application\70.0.3538.67\chrome.dll: The specified module could not be found. (0x7E)

有什么想法吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我知道这是一个较晚的回复-但几周前我本人是同一条船上的人。

原来-问题是字体。是的,图大声笑。

ServerCore仅包含一种字体,而不包含Google chrome呈现UI所需的字体。

我在这里为您整理了所需的字体,并展示了如何提取并安装在Windows容器中:https://github.com/prom3theu5/ServerCoreFonts

所需字体:

  • Arial
  • Consolas
  • Times New Roman