乐趣区

关于持续集成:自动化集成Pipeline整合Docker容器

前言:该系列文章,围绕继续集成:Jenkins+Docker+K8S 相干组件,实现自动化治理源码编译、打包、镜像构建、部署等操作;本篇文章次要形容流水线集成 Docker 用法

一、背景形容

微服务架构是以后支流的技术选型,在业务具体落地时,会存在很多业务服务,不论是在开发、测试、上线的任意节点中,如果基于手动编译的形式打包服务,操作老本不仅极高,而且很容易呈现纰漏。

通过 Pipeline 流水线的形式,将服务镜像构建编排成一键触发执行,实现自动化的治理流程,是微服务架构中的必要的功能模块。

二、流程设计

本篇中的流程节点,次要针对打包好的利用 Jar 包,在 docker 模块中的解决流程,次要是镜像构建治理与容器运行:

  • 构建 docker 文件目录与内容;
  • 拷贝 Jar 包,创立 Dockerfile 脚本文件;
  • 执行 docker 镜像构建,推送云仓库;
  • 拉取镜像文件并运行 docker 容器;

整个流程的都放在 Pipeline 流水线中,连接在本地 Jar 包生成之后。

三、实现过程

1、插件装置

首先装置流程中 Docker 集成的相干插件:Docker PipelineDocker pluginCloudBees Docker Hub/Registry Notification

在之前的流水线篇幅中,曾经通过流水线实现 Gitee 仓库代码 pull 和本地打包,上面开始解决 docker 环节。

2、镜像构建脚本

对于 Dockerfile 的脚本语法也能够参考之前 docker 篇幅,上面看流水线中的用法:

    environment {
        docker_directory = 'docker-app'
        docker_repository = '仓库 URL'
    }
    
        stage('Dockerfile') {
            steps {
                sh '''
                rm -rf ${docker_directory}
                mkdir -p ${docker_directory}
                cp auto-client/target/auto-client-1.0-SNAPSHOT.jar ${docker_directory}/auto-client.jar
                cd ${docker_directory}
cat>Dockerfile<<EOF
FROM java:8
MAINTAINER cicadasmile
VOLUME /data/docker/logs
ADD auto-client.jar application.jar
ENTRYPOINT ["java","-Dspring.profiles.active=dev","-Djava.security.egd=file:/dev/./urandom","-jar","/application.jar"]
EOF
                cat Dockerfile
                '''echo"create Dockerfile success"
            }
        }

脚本阐明:

  • 在流水线的工作空间创立目录docker-app
  • 每次执行都清空一次 docker 目录,再把 Jar 包和 Docker 脚本放进去;
  • cat-EOF-EOF:即创立 Dockerfile 文件,并把两头的内容写入;
  • 脚本中的内容必须在文件中顶行写入;

3、打包推送

这里即进入 docker 目录,执行镜像打包的操作,并把镜像推送到云端仓库,很多仓库都是公有的,须要身份验证,通过配置凭据去拜访:

stage('DockerImage'){
    steps {
        script {dir("${docker_directory}") {
                sh 'ls'
                docker.withRegistry("${docker_directory}", '拜访凭据') {docker.build("doc-line-app:latest").push()}
            }
            echo "build DockerImage success"
        }
    }
}

4、凭据配置

关上 Manage Jenkins 界面,Manage Credentials选项;

按如下流程配置即可:


同系列举荐

  • Jenkins 管理工具详解
  • Pipeline 流水语法详解
  • Docker 容器入门简介
  • 服务自动化部署和治理
  • 微服务组件二次浅封装

四、源代码地址

GitEE·地址
https://gitee.com/cicadasmile/butte-auto-parent
Wiki·地址
https://gitee.com/cicadasmile/butte-java-note

退出移动版