我在Linux机器上有两个docker映像。一个正在运行jenkins,另一个正在运行nodejs服务。詹金斯被连接到一个gitlab帐户,因此在我的管道中,使用
git branch: 'master', credentialsId: '6bc7-41b5-a1d9-2583489ad967', url: 'https://gitlab.com/myservice'
每次构建项目时,我的主机文件夹jenkins_home / workspace / MyJenkinsItem / myservicerepo中都具有最新的git版本。具有詹金斯人的docker镜像使用以下命令运行:
docker run --rm -d --name jenkins -v $MYPATH/jenkins/jenkins_home:/var/jenkins_home -p 8081:8080 -p 50000:50000 jenkins/jenkins:lts
在主机的nodejs项目中,我有一个bash脚本,可将文件从jenkins_home / workspace / MyJenkinsItem / myservicerepo(主机)复制到我选择的文件夹(例如/ mypath / nodejs)中。然后,它使用Dockerfile构建docker映像并运行我想要的服务。
我想做的是使jenkins的过程自动化。这意味着每次我从jenkins容器构建jenkins管道时,都必须访问/ mypath / nodejs中的脚本,并在另一个容器中运行/ mypath / nodejs中的所有项目。
我不确定该怎么做。我尝试过的是复制
docker run --rm -d --name jenkins -v $MYPATH/nodejs/jenkins-script.sh:/var/scripts/jenkins-script.sh -v $MYPATH/jenkins/jenkins_home:/var/jenkins_home -p 8081:8080 -p 50000:50000 jenkins/jenkins:lts
但是我有一个jenkins错误,即jenkins_script.sh无法在容器中找到特定的文件夹。好像我必须将所有nodejs装入我的jenkins容器中,然后从那里实例化nodejs容器?
预先感谢
答案 0 :(得分:0)
每当我必须启动jenkins时,我都必须挂载docker袜子和包含docker容器所有文件的文件夹,即Dockerfile,nodejs的package.json等。所以我要做的是:
docker run --rm -d --name jenkins \
-v MyNodeJSPAth/myfolder:MyNodeJSPAth/myfolder \
-v MyPATH/jenkins/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker \
-p 8081:8080 -p 50000:50000 jenkins/jenkins:lts
此外,因为我在jenkins容器内的docker命令上没有权限,所以将/ var / run中的docker.sock的权限更改为
chmod o+xw /var/run/docker.sock
但是,您也可以创建/使用有权访问/var/run/docker.sock的Docker容器的当前用户,但我没有使用它。