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

a5g8bdjr  于 12个月前  发布在  Jenkins
关注(0)|答案(3)|浏览(164)

如何(最好)将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(稍后)并不是一件好事,因为它会减慢构建过程。

bttbmeg0

bttbmeg01#

在jenkins镜像之上安装nodejs是一个不错的选择。在Dockefile中添加安装nodejs的指令是Docker在打包依赖项时要做的标准事情。
在Jenkins构建时自动添加nodejs(稍后)并不是一件好事,因为它会减慢构建过程。
但这并不是总成立. Docker构建在构建Dockerfile时为正在创建的层使用缓存。因此,如果你在Dockerfile的顶部安装nodejs,你只需要等待一次安装,下一个构建命令将只使用该高速缓存,并且不需要任何额外的时间在Jenkins镜像中安装nodejs。
我建议你使用docker multi-stage builds在jenkins镜像中安装nodejs。因为已经存在一个Docker image for node,你可以使用它在jenkins镜像中安装node。

FROM node as nodejs

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

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

o4tp2gmn

o4tp2gmn2#

除了答案,请看一下这个superb solution。这允许安装nodejs和npm。现在我可以在shell中运行'npm'作为命令。因此,不需要使用全局工具。注意:它承认使用多个FROM不是一个好的做法(再也不是了)。
一个很好的补充是this piece of advice。如果您需要多个节点版本,您也可以在Jenkins文件中定义它们!

noj0wjuj

noj0wjuj3#

如果你看到这一点,有一个更好的方法。你应该使用其他解决方案的唯一原因是,如果你真的真的需要在Jenkins Docker上安装Node,以便在Jenkins之外使用。
如果你正在使用node进行构建,请参阅此插件:https://plugins.jenkins.io/nodejs
按照那里的说明操作,您将在几分钟内让node在您的构建中工作

相关问题