首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在docker swarm中使用docker部署Jenkins

在docker swarm中使用docker部署Jenkins
EN

Stack Overflow用户
提问于 2018-01-28 18:21:43
回答 2查看 2.7K关注 0票数 3

因此,我正在尝试在我的docker群中运行jenkins,我希望它能够执行docker命令来构建新的docker镜像。

当我使用docker-compose脚本在本地运行它时:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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")
                        }
                    }
                }
            }
        }
    }
}

问题是,似乎不可能将其部署到我的docker群中。我只是不断地得到invalid mount config for type "bind": bind source path does not exist。这是在使用Portainer部署它的时候。我是不是配置错了什么或者是怎么回事?

编辑:我使用docker stack deploy -c jenkins.yml jenkins测试了部署以下合成文件

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

发布于 2018-01-29 17:00:18

没有理由使用绑定挂载或docker套接字在docker容器中使用Jenkins。可以使用命名卷来存储重要的(持久的)配置数据,但是您可以使用docker命令构建镜像,而不需要使用主机docker套接字。

请参阅https://hub.docker.com/r/jenkins/jenkins/

https://hub.docker.com/_/docker/ (docker in docker)

http://vfarcic.github.io/jenkins-swarm/#/cover

票数 3
EN

Stack Overflow用户

发布于 2018-01-28 18:45:26

您需要使用docker compose version: '3'or greater将服务部署到swarm。https://docs.docker.com/engine/swarm/stack-deploy/

使用docker stack deploy部署合成文件- https://docs.docker.com/engine/swarm/stack-deploy/

撰写ref - https://docs.docker.com/compose/compose-file/

仅供参考- docker compose v3不支持build,您需要将图像馈送到群组才能部署它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48485271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档