【问题标题】:Install / add nodejs into (Jenkins) docker image permanently将nodejs永久安装/添加到(Jenkins)docker镜像中
【发布时间】:2019-02-15 15:30:41
【问题描述】:

我如何(最好)将 nodejs 永久安装/添加到(Jenkins)docker 映像中?

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

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

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

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

在 Jenkins 构建时自动添加 nodejs(稍后)并不是一件好事,因为它会减慢构建过程。

【问题讨论】:

  • 为什么不能简单地使用docker-node 图像?
  • 我已经有一个可以访问 Docker 的 Jenkins 映像。我添加了 maven 来运行 maven 作业。现在我终于想将 nodejs 添加到 Jenkins 映像中。为什么?然后我可以使用 nodejs 作为 Jenkins 内部的全局工具。那么如何将 nodejs 添加到 Jenkins 镜像中呢?

标签: node.js docker jenkins


【解决方案1】:

除了答案,请查看superb solution。这允许安装 nodejs 和 npm。现在我可以在 shell 中将“npm”作为命令运行。因此,不需要使用全局工具。注意:它表明使用多个 FROM 不是一个好习惯(不再)。

一个很好的补充是this piece of advice。如果你需要多个节点版本,你也可以在你的 Jenkinsfile 中定义它们!

【讨论】:

    【解决方案2】:

    在 jenkins 镜像之上安装 nodejs 是可行的方法。在 Dockefile 中添加安装 nodejs 的指令是 Docker 打包依赖项时的标准操作。

    在 Jenkins 构建时自动添加 nodejs(稍后)不是 好东西,因为它减慢了构建过程。

    这并不总是正确的。 Docker 构建对构建 Dockerfile 时创建的层使用缓存。因此,如果您在 Dockerfile 的顶部安装 nodejs,您只需等待一次安装,下一个构建命令将只使用缓存,并且在 Jenkins 映像中安装 nodejs 不需要任何额外的时间。

    我建议您使用 docker multi-stage builds 在 jenkins 映像中安装 nodejs。由于已经存在Docker image for node,您可以使用它在 jenkins 映像中安装节点。

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

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

    【讨论】:

    • 谢谢!我可以使用 /usr/local/bin/node 作为 Jenkins 全局工具操作中的 nodejs 安装文件夹吗?
    • 此方法有效,但无法安装 npm COPY --from=nodejs /usr/local/bin/npm /usr/local/bin/npm 试过了,但 npm 还是不行
    猜你喜欢
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多