我正在尝试对 Jenkins 进行一两个快速实验。为此,我打算使用jenkins图像并向其添加nodejs和npm。这是我想要做的:

FROM jenkins

USER root

RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - \
    && apt-get update \
    && apt-get install -y \
        nodejs

RUN npm install -g npm

RUN npm --version

USER jenkins

但是,npm --version调用将失败,并显示以下错误:

Step 5/6 : RUN npm --version
 ---> Running in 48a250a4fdb8
module.js:471
    throw err;
    ^

Error: Cannot find module 'process-nextick-args'
    at Function.Module._resolveFilename (module.js:469:15)
    at Function.Module._load (module.js:417:25)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/usr/lib/node_modules/npm/node_modules/readable-stream/lib/_stream_readable.js:26:23)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
The command '/bin/sh -c npm --version' returned a non-zero code: 1

解决此问题的正确方法是什么(如果有)?

最佳答案

请尝试以下操作,它使用docker多阶段构建将依赖关系从一个镜像复制到另一个镜像。这将使您避免在docker中安装节点所需完成的所有特殊操作。有一个由docker团队构建的正式docker镜像,因此您可以如下使用它:

FROM node

FROM jenkins
USER root
COPY --from=0 /usr/local  /usr/local
RUN npm --version
USER jenkins

npm --version将输出5.3.0

关于node.js - 将nodejs和npm添加到Jenkins Docker镜像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46176808/

10-17 03:12