2016-06-10 64 views
5

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

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 

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

+0

你使用的是什么版本的梦魇? – Ross

+0

你可以用DEBUG =噩梦运行它:*,electron:*,看看你是否得到了一些有用的日志消息? – khattam

+0

运行最新版本的nightmare.js(2.5.1),我在上面的帖子中获得了以下输出。 –

回答

2

你可以做的就是把所有的文件放在一个子目录,比如应用程序/在你Dockerfile做:

ADD app/ /usr/src/app/ 
当然在你的应用程序文件夹中会有env.sh的

, package.json,tux.js和lib目录

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

PS:它也适用于COPY

0

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

RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 

*COPY . /usr/src/app* 

RUN npm install 

to the dockerfile documentation,COPY命令拷贝文件,不是你用COPY . /usr/src/app指定的目录。相反,请尝试用*替换.,因为这将指定您决定从中启动docker build的当前目录中的所有文件。

+0

没有运气。运行COPY */usr/src/app将每个文件(不是目录)复制到我的/用户/ src/app目录。关闭(我认为),但没有运气。 –

+0

您是否能够在不使用容器的情况下让您的应用程序工作?那么,只要在本地机器上构建它,你就成功了?尝试将不完整的应用程序加载到码头集装箱中并不是一个好主意,因为这可能会增加一层全新的混淆。我怀疑你的应用程序是不完整的,但它并不伤害知道。 – Jouster500

+0

本地很棒。那里没有问题。它正在得到无头环境的设置并正常运行 - 我在猜测我错过了各种依赖......只是不确定输出到底有多冗长。 –

1

好的,所以我找出了问题所在。显然,它不喜欢我的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 
+2

您可以通过仅使用一条ADD指令来限制创建的图层数量:'ADD env.sh package.json tux.js/usr/src/app' –