Ste*_*lin 3 jenkins docker docker-compose
我正在运行此代码来启动 dockerized jenkins。这有效。
docker run -p 81:8080 -p 50000:50000 --name myjenkins --privileged -v %cd%/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins
Run Code Online (Sandbox Code Playgroud)
我使用 bitbucket、webhooks 成功签出 scm,并在每次推送时通过防火墙连接到本地 jenkins。之前的 Jenkinsfile 示例有效:
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我添加到我的 Jenkinsfile 中
pipeline {
agent any
stages {
stage('Test') {
steps {
echo 'Testing...'
}
}
stage('docker-compose') {
steps {
sh "./dockcompose.sh"
}
}
}
post {
always {
sh "./dockcompose-down.sh"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个本地 docker-compose.yml 文件,我已经在本地进行了彻底的测试并且可以工作。在管道错误中我得到:
docker-compose: not found
Run Code Online (Sandbox Code Playgroud)
有什么建议为什么它找不到 docker-compose 以及如何让它识别该方法吗?谢谢
您必须安装docker-compose在容器内,因为jenkins/jenkins图像不附带docker-compose. 我建议通过创建您自己的 Dockerfile 来扩展原始映像。例如,在任何目录中,创建以下名为的文件Dockerfile:
FROM jenkins/jenkins
USER root
# see https://docs.docker.com/compose/install/
RUN curl -L \
"https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose \
&& chmod +x /usr/local/bin/docker-compose
USER jenkins
Run Code Online (Sandbox Code Playgroud)
现在从该目录中构建新图像,我们将其命名为myjenkins:
docker build -t myjenkins .
Sending build context to Docker daemon 4.096kB
Step 1/4 : FROM jenkins/jenkins
---> 57f9f0b056cc
Step 2/4 : USER root
---> Using cache
---> f6dfbc759063
Step 3/4 : RUN curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
---> Running in 36c8c22c01fb
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 617 0 617 0 0 1944 0 --:--:-- --:--:-- --:--:-- 1946
100 16.4M 100 16.4M 0 0 2404k 0 0:00:06 0:00:06 --:--:-- 3423k
Removing intermediate container 36c8c22c01fb
---> ca119efd5ea6
Step 4/4 : USER jenkins
---> Running in 5d1149b328b5
Removing intermediate container 5d1149b328b5
---> 841b3adbfe94
Successfully built 841b3adbfe94
Successfully tagged myjenkins:latest
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式列出它docker image ls:
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
myjenkins latest 841b3adbfe94 10 minutes ago 585MB
...
Run Code Online (Sandbox Code Playgroud)
现在启动你的容器。使用您的命令,您只需将jenkins/jenkins命令末尾的图像名称替换为myjenkins(注意在我的 mac PC 上进行测试,我删除了绑定安装,/var/jenkins_home但您应该能够保留它)。另外,如有必要,请删除先前启动的容器:
docker run --rm -p 81:8080 -p 50000:50000 --name myjenkins -v /var/run/docker.sock:/var/run/docker.sock myjenkins
Run Code Online (Sandbox Code Playgroud)
输入您的容器并检查是否docker-compose已安装:
docker exec -it myjenkins bash
jenkins@43b74c8f602b:/$ docker-compose --version
docker-compose version 1.25.3, build d4d1b42b
jenkins@43b74c8f602b:/$
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4317 次 |
| 最近记录: |