Nightmare.js 和 Docker
Nightmare.js with Docker
我正在尝试 运行 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
有什么想法吗?将不胜感激。
读出 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
的所有文件。
好的,我知道问题出在哪里了。显然,它不喜欢我的 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
你可以做的是将所有文件放在一个子目录中,比如 app/ 并在你的 Dockerfile 中执行:
ADD app/ /usr/src/app/
当然在你的app文件夹中会有env.sh、package.json、tux.js和lib目录
这样,如果您需要添加更多文件,就不必在 dockerfile 中手动添加它们。
PS:它也适用于 COPY
我正在尝试 运行 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
有什么想法吗?将不胜感激。
读出 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
的所有文件。
好的,我知道问题出在哪里了。显然,它不喜欢我的 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
你可以做的是将所有文件放在一个子目录中,比如 app/ 并在你的 Dockerfile 中执行:
ADD app/ /usr/src/app/
当然在你的app文件夹中会有env.sh、package.json、tux.js和lib目录
这样,如果您需要添加更多文件,就不必在 dockerfile 中手动添加它们。
PS:它也适用于 COPY