gpt4 book ai didi

docker - 如何让 docker-compose 在 Windows 上的 docker 生成的 jenkins 管道中工作?

转载 作者:行者123 更新时间:2023-12-05 01:13:42 24 4
gpt4 key购买 nike

我正在运行这段代码来启动一个 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

每次推送时,我都使用 bitbucket、webhooks 并通过防火墙连接到我的本地 jenkins 成功 checkout scm。以前的 Jenkinsfile 示例有效:

pipeline {
agent any

stages {
stage('Build') {
steps {
echo 'Building...'
}
}
}
}

然后我已将其添加到我的 Jenkinsfile 中

pipeline {
agent any
stages {
stage('Test') {
steps {
echo 'Testing...'
}
}
stage('docker-compose') {
steps {
sh "./dockcompose.sh"
}
}
}
post {
always {
sh "./dockcompose-down.sh"
}
}
}

我有一个本地 docker-compose.yml 文件,我已经在本地进行了全面测试并且可以正常工作。在我得到的管道错误中:

docker-compose: not found

有什么建议为什么它找不到 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

现在从该目录中构建新镜像,我们将其命名为 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

你可以用 docker image ls 列出它:

docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
myjenkins latest 841b3adbfe94 10 minutes ago 585MB
...

现在启动您的容器。使用您的命令,您只需将命令末尾的图像名称 jenkins/jenkins 替换为 myjenkins (注意在我的 mac PC 上进行测试时,我删除了绑定(bind)- /var/jenkins_home 的挂载,但您应该能够保留它)。此外,如有必要,请删除以前启动的容器:

docker run --rm -p 81:8080 -p 50000:50000 --name myjenkins  -v /var/run/docker.sock:/var/run/docker.sock myjenkins

输入你的容器并检查是否安装了 docker-compose:

docker exec -it myjenkins bash
jenkins@43b74c8f602b:/$ docker-compose --version
docker-compose version 1.25.3, build d4d1b42b
jenkins@43b74c8f602b:/$

关于docker - 如何让 docker-compose 在 Windows 上的 docker 生成的 jenkins 管道中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60001931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com