在Docker容器中运行脚本以实例化另一个Docker容器

时间:2019-06-11 14:34:26

标签: git docker jenkins

我在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容器?

预先感谢

1 个答案:

答案 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容器的当前用户,但我没有使用它。