• 自动化集成: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选项;

    按如下流程配置即可:


    同系列推荐


    四、源代码地址

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

  • 相关阅读:
    Web 3D是否需要WebAssembly?
    # Python设计模式 单例模式
    学写PEP,参与Python语言的设计
    Github仓库如何选择开源许可证
    程序猿的产品思考:2C与2B产品思维的区别
    vue-如何实现带参数跳转页面
    基于Redis在定时任务里判断其他定时任务是否已经正常执行完的方案
    IDEA创建SpringBoot的多模块项目教程
    如何优雅地使用Mybatis逆向工程生成类
    Activiti工作流框架学习笔记(二)之springboot2.0整合工作流Activiti6.0
  • 原文地址:https://www.cnblogs.com/cicada-smile/p/15757248.html
Copyright © 2020-2023  润新知