【问题标题】:Building Node.js and React.js using Jenkins使用 Jenkins 构建 Node.js 和 React.js
【发布时间】:2018-11-24 01:46:55
【问题描述】:

我正在关注 Jenkins 网站上的官方 tutorial。我有一个 blueocean Docker 容器,它按照教程在 Jenkinsfile 中运行管道:

pipeline {
    agent {
        docker {
            image 'node:6-alpine' 
            args '-p 3000:3000' 
        }
    }
    stages {
        stage('Build') { 
            steps {
                sh 'npm install' 
            }
        }
    }
}

问题是管道在尝试拉取 Docker 映像时失败:

[ode-js-react-npm-app_master-6PEWX3VWDA4SAdDMJA4YKJCZSABJSAQCSGVYMKHINXGDDJLA] Running shell script
+ docker pull node:6-alpine
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon. Is the docker daemon running on this host?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
script returned exit code 1

经过一些故障排除后,我意识到这是失败的,因为 Jenkins 试图拉取 Docker 容器本身,而不是主机。这不是我想要的,而且文档实际上指出:

此映像参数(代理部分的 docker 参数)下载 node:6-alpine Docker 映像(如果您的计算机上尚不可用)并将此映像作为单独的容器运行。这意味着: 您将在 Docker 中本地运行单独的 Jenkins 和 Node 容器。 Node 容器成为 Jenkins 用来运行 Pipeline 项目的代理。然而,这个容器是短暂的——它的生命周期只是你的管道执行的持续时间。

谁能解释我做错了什么以及为什么尝试将 Node.js Docker 映像拉入 Jenkins 而不是本地机器?我希望有一个与编排应用程序的 Nodejs 容器不同的 Jenkins 容器。

【问题讨论】:

    标签: node.js docker jenkins jenkins-pipeline jenkins-blueocean


    【解决方案1】:

    我通过以 root 身份运行容器解决了这个问题,否则它将无法访问 Docker 守护进程套接字 /var/run/docker.sock ...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-23
      • 1970-01-01
      • 2017-07-25
      • 2022-06-12
      • 2021-05-23
      相关资源
      最近更新 更多