我刚开始与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
所以现在要设置正确的访问权限。