与Docker的Nightmare.js

我试图在服务器上运行Nightmare.js。 我很清楚,它在Linux上是无头的,并且需要xvfb 。 我不明白的是为什么我在DEBUG模式下继续得到以下错误:

  nightmare queuing process start +0ms nightmare queueing action "useragent" +3ms nightmare queueing action "goto" for https://news.ycombinator.com +2ms nightmare queueing action "cookies" +1ms nightmare queueing action "goto" for https://news.ycombinator.com/login +0ms nightmare queueing action "type" +1ms nightmare queueing action "type" +0ms nightmare queueing action "click" +0ms nightmare queueing action "wait" +1ms nightmare queueing action "goto" for https://news.ycombinator.com/item?id=11878025 +0ms nightmare queueing action "click" +0ms nightmare queueing action "wait" +1ms nightmare running +0ms nightmare electron child process exited with code 2: undefined +25ms 

这是我的Dockerfile:

 FROM node:latest 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 RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY . /usr/src/app RUN npm install CMD DEBUG=nightmare* xvfb-run --server-args="-screen 0 1024x768x24" node tux.js -s hn -m create -p 11878025 

有什么想法吗? 帮助将不胜感激。

你可以做的是把所有的文件放在一个子目录中,比如app /,然后在你的Dockerfile中执行:

 ADD app/ /usr/src/app/ 

当然在你的app文件夹中会有env.sh,package.json,tux.js和lib目录

这样,如果你需要添加更多的文件,你不必在你的dockerfile中手动添加它们。

PS:它也适用于COPY

好的,所以我想清楚是什么问题。 显然,它不喜欢我的Dockerfile中的复制语法。 我结束了使用ADD,它的工作。

 ADD /lib /usr/src/app/lib ADD env.sh /usr/src/app ADD package.json /usr/src/app ADD tux.js /usr/src/app 

读取undefined的错误表示您缺less一个包。 毕竟,如果一个软件包没有安装,那么它是如何定义的? 这意味着你没有正确地build立容器,我想我看到了罪魁祸首。

 RUN mkdir -p /usr/src/app WORKDIR /usr/src/app *COPY . /usr/src/app* RUN npm install 

根据dockerfile文档 ,COPY命令复制文件 ,而不是COPY . /usr/src/app指定的目录COPY . /usr/src/app COPY . /usr/src/app 。 相反,尝试更换.*因为这将指定当前目录中的所有文件,您决定启动docker build