5

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

  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

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

4

3 回答 3

2

您可以做的是将所有文件放在一个子目录中,例如 app/ 并在 Dockerfile 中执行以下操作:

ADD app/ /usr/src/app/

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

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

PS:它也适用于 COPY

于 2016-06-17T08:56:19.783 回答
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
于 2016-06-15T18:27:52.523 回答
0

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

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

*COPY . /usr/src/app*

RUN npm install

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

于 2016-06-13T18:27:40.077 回答