将nodejs和npm添加到Jenkins泊坞窗图像

我试图做一个快速的实验或两个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多阶段构build将依赖关系从一个图像复制到另一个图像。 这将允许您避免在Docker中安装节点需要做的所有特殊事情。 Docker团队build立了一个官方的docker图像,所以你可以这样使用它:

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

npm –version会输出5.3.0

由docker的jenkins图像使用最小的安装运行jenkins,而不是直接Dockerfile更改在运行活动容器中进行一些debugging。

  1. 运行你的容器
  2. 使用docker exec -it -u root / bin / bash

然后尝试您的更改,并在Dockerfile中反映这些更改