在jenkins码头工人代理中运行码头工人集装箱

时间:2018-01-06 12:15:56

标签: node.js docker jenkins

我刚开始与Jenkins合作并遇到了这类问题:我的nodejs应用程序需要启动它自己的docker容器(使用mongodb)才能执行测试。我在我的本地机器上做得很好,但现在我不确定如何让它在jenkins中运行。

我的詹金斯是一个独立的设置(不是集装箱化的)

它在docker agent

的帮助下运行管道

所以实际上任务是在docker中运行docker,这看起来并不困难,但它不起作用,即使我已安装docker socker和docker run file in the ARGS ..

通过此设置,jenkins无法启动代理容器

pipeline {
  agent {
    docker {
      image 'danthedev/dtd-docker-node'
      args '-p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):$(which docker)'
    }
  }

  environment {
    CI = 'true'
  }


  stages {
    stage('Build') {
      steps {
        sh 'yarn install'
      }
    }

    stage('Test') {
      environment {
        NODE_ENV = 'test'
      }
      steps {
        sh 'yarn test'
      }
    }

  }
}

/////

[Pipeline] withDockerContainer
Jenkins does not seem to be running inside a container
$ docker run -t -d -u 122:131 -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):$(which docker) -w /var/lib/jenkins/workspace/ypc -v /var/lib/jenkins/workspace/ypc:/var/lib/jenkins/workspace/ypc:rw,z -v /var/lib/jenkins/workspace/ypc@tmp:/var/lib/jenkins/workspace/ypc@tmp:rw,z -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** --entrypoint cat danthedev/dtd-docker-node
[Pipeline] // withDockerContainer
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
java.io.IOException: Failed to run image 'danthedev/dtd-docker-node'. Error: docker: invalid reference format.

UPD。 我把码头工具改成了 args '-p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker'

现在错误为Error: connect EACCES /var/run/docker.sock

所以现在要设置正确的访问权限。

0 个答案:

没有答案