虽然使用与集线器中相同的Dockerfile,但重buildDocker镜像失败

我想自己build立这个docker形象:chrisgeorge / nightmare-headless( https://hub.docker.com/r/chrisgeorge/nightmare-headless/~/dockerfile/ )

所以我使用了相同的Dockerfile。

Dockerfile

FROM node:slim RUN apt-get update && \ apt-get install -y \ xvfb \ x11-xkb-utils \ xfonts-100dpi \ xfonts-75dpi \ xfonts-scalable \ xfonts-cyrillic \ x11-apps \ clang \ libdbus-1-dev \ libgtk2.0-dev \ libnotify-dev \ libgnome-keyring-dev \ libgconf2-dev \ libasound2-dev \ libcap-dev \ libcups2-dev \ libxtst-dev \ libxss1 \ libnss3-dev \ gcc-multilib \ g++-multilib \ xauth \ git \ sudo \ --no-install-recommends \ && apt-get autoclean \ && apt-get clean \ && rm -rf /var/lib/api/lists/* RUN chown -R node:node /home/node RUN echo %sudo ALL=NOPASSWD: ALL >> /etc/sudoers WORKDIR /home/node ENV HOME /home/node USER node RUN npm install nightmare 

npm install nightmare将调用npm install electron ,这是失败的:

 /usr/local/lib/node_modules/electron/install.js:47 throw err ^ Error: ENOENT: no such file or directory, lstat '/usr/local/lib/node_modules/electron/dist/resources' at Error (native) npm ERR! Linux 4.4.0-72-generic npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "electron" npm ERR! node v6.10.2 npm ERR! npm v3.10.10 npm ERR! code ELIFECYCLE npm ERR! electron@1.6.6 postinstall: `node install.js` npm ERR! Exit status 1 

一般来说,这是因为未指定dockerfile中的依赖项的版本。

如果应用程序的依赖关系具有与开发版本不同的版本,则应用程序可能会中断。 最好的做法是在dockerfile中设置大多数依赖项的版本,以便apt install实际上始终安装相同的软件。 有些例外存在,比如用于健康检查的curl,在更新之后几乎100%都可以工作

更新:现在应该修复 – https://github.com/electron/electron/issues/9323#issuecomment-298287399


这是一个Electron的依赖的bug,有一个解决方法 :

将“extract-zip”:“= 1.6.0”添加到您的项目的package.json依赖关系中电子依赖关系所在的相同位置。

Interesting Posts