我如何(最好)将Node.js永久安装/添加到(詹金斯)Docker映像中?
结果是同时包含Jenkins和nodejs的docker映像。
目的是将nodejs作为全局工具安装在Jenkins容器中。要了解 nodejs的安装文件夹,必须知道。
我看到了这个解决方案,但是Nodejs的安装文件夹是什么?
RUN curl -sL https://deb.nodesource.com/setup_8.x |须藤-E bash && \ sudo apt-get install -y nodejs
在Jenkins构建时自动添加nodejs(以后)不是一件好事,因为它会减慢构建过程。
答案 0 :(得分:1)
在jenkins映像之上安装nodejs是一种方法。在打包依赖项时,添加一个指令以在Dockefile中安装nodejs是Docker中的标准操作。
在Jenkins构建时自动添加nodejs(以后)不是 好事,因为它减慢了构建过程。
并非总是如此。 Docker构建使用缓存来构建Dockerfile时创建的图层。因此,如果将nodejs安装在Dockerfile的顶部,则只需等待一次即可安装,下一个构建命令将仅使用缓存,并且无需在Jenkins映像内安装nodejs的任何额外时间。
我建议您使用docker multi-stage builds将nodejs安装在jenkins映像中。由于已经存在Docker image for node,因此可以使用它在jenkins映像中安装节点。
FROM node as nodejs
FROM jenkins/jenkins
COPY --from=nodejs /usr/local/bin/node /usr/local/bin/node
通过构建上面的Dockerfile,您将获得带有jenkins的映像,并使用官方节点Docker映像安装了节点。
答案 1 :(得分:0)
除答案外,请查看此superb solution。这允许安装nodejs和npm。现在,我可以在shell中作为命令运行“ npm”。因此,不需要使用Global Tools。注意:建议不要使用多个FROM。
一个很好的加法是this piece of advice。如果需要多个节点版本,也可以在Jenkinsfile中定义它们!