所以我正在尝试在我的 docker 群中运行 jenkins,我希望它能够执行 docker 命令来构建新的 docker 镜像。
当我使用 docker-compose 脚本在本地运行它时:
version: '2'
services:
jenkins:
build: ./jenkins
image: munhunger/jenkins
container_name: "jenkins"
ports:
- "81:8080"
environment:
- minio_url=<URL>
- minio_access=<TOKEN>
- minio_secret=<SECRET>
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /root/.jenkins/workspace:/root/.jenkins/workspace
- /var/lib/jenkins:/var/lib/jenkins
- /var/lib/docker:/var/lib/docker
它完全按照我想要的方式工作,它可以构建以下 jenkinsfile:
pipeline {
agent any
stages {
stage('build war') {
agent {
docker { image 'gradle:latest' }
}
steps {
sh 'gradle war -b oven/build.gradle'
}
}
stage('build dockerimage') {
steps {
script {
dir('oven') {
def image = docker.build("munhunger/highly-oven")
docker.withRegistry('https://registry.hub.docker.com', 'docker-hub-credentials') {
image.push("${env.BUILD_NUMBER}")
image.push("latest")
}
}
}
}
}
}
}
问题是似乎不可能将其部署到我的码头工人群中。我只是不断得到invalid mount config for type "bind": bind source path does not exist
.这是在使用Portainer部署它的时候。我是否配置错误或发生了什么?
编辑:我测试了使用 docker stack deploy -c jenkins.yml jenkins
部署以下撰写文件
version: '3'
services:
jenkins:
image: munhunger/jenkins
container_name: "jenkins"
ports:
- "81:8080"
environment:
- minio_url=<URL>
- minio_access=<ACCESS>
- minio_secret=<SECRET>
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /root/.jenkins/workspace:/root/.jenkins/workspace
- /var/lib/jenkins:/var/lib/jenkins
- /var/lib/docker:/var/lib/docker
但我仍然在invalid mount config for type "bind": bind source path does not exist
没有理由在 docker 容器中使用 jenkins 绑定挂载或 docker 套接字。可以使用命名卷来存储重要的(持久(配置数据,但您可以使用 docker 命令构建映像,而无需使用主机 docker 套接字。
请参阅 https://hub.docker.com/r/jenkins/jenkins/
和 https://hub.docker.com/_/docker/(Docker中的Docker(
和 http://vfarcic.github.io/jenkins-swarm/#/cover
你需要使用 docker compose version: '3'or greater
来部署服务到群。https://docs.docker.com/engine/swarm/stack-deploy/
使用 docker stack deploy
部署撰写文件 -https://docs.docker.com/engine/swarm/stack-deploy/
撰写参考 -https://docs.docker.com/compose/compose-file/
仅供参考 - docker compose v3 不支持 build
,您需要将图像提供给群才能部署它。