Dockerfile:将npm添加到现有的Docker映像

时间:2018-09-19 19:06:49

标签: docker jenkins npm

具有Jenkins Docker映像,我想向该映像添加完整的'npm'环境。因此,在构建了Dockerfile之后,我同时拥有Jenkins和'npm'环境的映像。

目的是让Jenkins作业运行shell命令“ npm”。因此,'npm'应该在$ PATH上(在Ubuntu中)。

我已经有了一个Dockerfile,里面有很多东西,例如Jenkins和Maven。

this post中描述了一种针对节点的解决方案。重要的是,我可以做一些类似的事情吗?我应将哪些文件夹复制到Jenkins泊坞映像?

FROM node as nodejs

FROM jenkins/jenkins
// All kinds of other stuff goes here
COPY --from=nodejs /usr/local/bin/node /usr/local/bin/node ???

在Jenkins Global工具中自动安装“ npm”不是我的首选解决方案。

2 个答案:

答案 0 :(得分:3)

使用多个FROM指令is not a feature, it's a bug。建议删除它,您应该避免使用它

  

不惜一切代价!

如果您的jenkins需要npm,只需将其安装在此处。无论如何,它都是基于openjdk图片。

FROM jenkins/jenkins

RUN apt-get install -y curl \
  && curl -sL https://deb.nodesource.com/setup_9.x | bash - \
  && apt-get install -y nodejs \
  && curl -L https://www.npmjs.com/install.sh | sh

答案 1 :(得分:1)

我前段时间也遇到了同样的问题。就我而言,事实证明,最好是使用具有适当容量的一次性容器,而不是使用Jenkins在容器中安装已安装的node / npm。

为什么?事实证明,在这段时间内使用了许多不同版本的npm。当然可以设置两个版本的npm(请看https://github.com/creationix/nvm),但是我选择的最佳解决方案是:https://getintodevops.com/blog/the-simple-way-to-run-docker-in-docker-for-ci

但是,请注意,这是我的项目案例。我在Jenkins容器中使用了docker,以便可以通过使用作业配置(或更高版本-Jenkinsfiles)来使用任何东西。