将Node.js永久安装/添加到(Jenkins)Docker镜像中

3

如何将nodejs永久地安装/添加到Jenkins docker镜像中?

结果是一个包含Jenkins和nodejs的docker镜像。

目的是在Jenkins容器中将nodejs安装为全局工具。要实现这一点,必须知道nodejs的安装文件夹。

我看到了例如这个解决方案,但是Nodejs的安装文件夹在哪里?

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

在Jenkins构建时自动添加nodejs并不是一个好主意,因为它会减慢构建过程。


为什么你不能简单地使用docker-node镜像? - undefined
我已经有一个Jenkins镜像,可以访问Docker。我已经添加了maven以便运行maven任务。现在,我最终想要将nodejs添加到Jenkins镜像中。为什么呢?这样我就可以在Jenkins中将nodejs作为全局工具使用。那么,我该如何将nodejs添加到Jenkins镜像中呢? - undefined
3个回答

2
在jenkins镜像上安装nodejs是可行的方法。在Dockerfile中添加安装nodejs的指令是打包依赖项时Docker中常见的标准操作。
“在Jenkins构建时自动添加nodejs(稍后)”并不总是好的选择,因为它会减慢构建过程。但这并非总是正确的。Docker构建使用缓存来创建层,因此如果您在Dockerfile的顶部安装nodejs,则只需要等待一次安装,下一个构建命令将只使用缓存,并且不需要在Jenkins映像中安装nodejs。
我建议您使用docker多阶段构建在jenkins映像中安装nodejs。由于已经存在用于node的Docker映像, 因此您可以使用该映像在jenkins映像中安装node。
FROM node as nodejs

FROM jenkins/jenkins
COPY --from=nodejs /usr/local/bin/node /usr/local/bin/node

通过构建上述的Dockerfile,您将获得一个包含jenkins和node的镜像,使用官方的node Docker镜像安装。

谢谢!我可以将/usr/local/bin/node作为Jenkins全局工具操作中的nodejs安装文件夹吗? - undefined
1
这种方法是有效的,但它不会安装npm。 COPY --from=nodejs /usr/local/bin/npm /usr/local/bin/npm 尝试了这个,但npm仍然无法工作。 - undefined

1
除了答案之外,请看一下这个绝妙的解决方案。它允许安装nodejs和npm。现在我可以在shell中运行“npm”命令。因此,不需要使用全局工具。注意:它建议不再使用多个FROM,这不是一个好的做法。
一个非常好的补充是这个建议。如果您需要多个节点版本,您也可以在Jenkinsfile中定义它们!

0
如果你看到这个,那就有更好的方法。唯一使用其他解决方案的原因是,如果你真的非常需要在jenkins docker上安装node以供jenkins之外的用途。
如果你正在使用node进行构建,请参考这个插件:https://plugins.jenkins.io/nodejs 按照那里的说明操作,你将在几分钟内使node在你的构建中正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接