如何从docker集装箱运行Karmatesting?

我最近将我的node.js应用程序移动到了docker镜像中,并且想要在镜像中运行我的testing。 我的摩卡/节点testing工作正常,但Karmatesting涉及启动Chrome来运行testing,Chrome并未安装在容器中。

我该如何解决这个问题?

  • 在容器中安装Chrome? 似乎不太理想,因为我不想将Chrome发送到容器内的生产服务器。
  • 以某种方式允许它连接到主机上的Chrome?
  • 创build一个新的图像,从我的应用程序图像inheritance,并添加Chrome和其他东西?

谷歌search“docker和业力”显示docker图像,但我找不到如何思考问题和最好的方法的指示。

我发现这个docker形象是在CI大厅docker集装箱内快速运行业力testing的一个很好的起点:

https://hub.docker.com/r/markadams/chromium-xvfb-js/

它包含节点6.x(最新)+ NPM和使用X虚拟帧缓冲区的无头铬实例。 非常适合我!

使用PhantomJS而不是Chrome。 Karma有PhantomJS发射器 。

基于Blink的PhantomJS。

安装PhantomJS:

 npm karma-phantomjs-launcher --save-dev 

添加到Karmaconfiguration:

 module.exports = function(config) { config.set({ browsers : ['PhantomJS'] }); }; 

编辑

这里是Dockerfile一部分

 ENV NODE_VERSION 0.12.7 ENV NPM_VERSION 3.5.1 ENV PHANTOM_JS phantomjs-1.9.8-linux-x86_64 # App and test RUN set -x \ && buildDeps='curl git bzip2 file libfreetype6 libfontconfig1 python-pip python-dev libpq-dev libmemcached-dev libzmq-dev libjpeg62-turbo-dev zlib1g-dev libtiff5-dev make g++ psmisc' \ && apt-get update \ && apt-get install -y $buildDeps --no-install-recommends \ && rm -rf /var/lib/apt/lists/* \ && curl -SLO "https://bitbucket.org/ariya/phantomjs/downloads/$PHANTOM_JS.tar.bz2" \ && tar xvjf $PHANTOM_JS.tar.bz2 \ && mv $PHANTOM_JS /usr/local/share \ && ln -sf /usr/local/share/$PHANTOM_JS/bin/phantomjs /usr/local/bin \ && curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.gz" \ && curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ && gpg --verify SHASUMS256.txt.asc \ && grep " node-v$NODE_VERSION-linux-x64.tar.gz\$" SHASUMS256.txt.asc | sha256sum -c - \ && tar -xzf "node-v$NODE_VERSION-linux-x64.tar.gz" -C /usr/local --strip-components=1 \ && rm "node-v$NODE_VERSION-linux-x64.tar.gz" SHASUMS256.txt.asc \ && npm install -g npm@"$NPM_VERSION" grunt-cli \ && npm install \ && npm cache clear \ && ./node_modules/.bin/bower install --allow-root \ && npm test \ && apt-get purge -y --auto-remove $buildDeps \ && rm -rf /usr/local/bin/node /usr/local/bin/npm /usr/local/include/node /usr/local/lib/node_modules \ && rm -rf /usr/local/share/$PHANTOM_JS /usr/local/bin/phantomjs 

在这种情况下,Docker做了一层。 在这一层

  1. 安装库和工具(debian jessie)
  2. 安装PhantomJS
  3. 安装NodeJS
  4. 运行testing
  5. 删除库和工具
  6. 删除NodeJS
  7. 删除PhantomJS

testing正在运行,您在生产容器中没有PhantomJS。

Interesting Posts