Jenkins一键打包部署Spring Boot 应用的Docker镜像

一、前言

1、本文主要内容

​ 将在项目中实际使用到的相关东西整理记录一波,同时可以方便其他同学在使用到的时候参考一下(自己也备忘),有不对的地方,欢迎指出~~

  • Docker部署SpringBoot 项目通用Dockerfile文件、脚本
  • Jenkins新建任务图文详解

3、本篇环境信息

  • 服务器

    操作系统硬件配置IP说明
    CentOS 74C16G10.133.28.54部署Jenkins
  • Jenkins版本

    Jenkins安装包有两种,一种是LTS,一种是Weekly。LTS是稳定版,Weekly每周会更新一次,一般使用LTS就行了,最新版的LTS:2.235.2

  • Docker

    Docker Engine - Community : 19.03.8

  • Spring Boot应用

    使用的是版本2.2.5.RELEASE,当然只要是一个Spring Boot应用都可以

  • GitLab

    本文演示使用的是GitLab社区版12.7.6 ,也可以使用GitHub 、Gitee或者SVN都可以

二、准备工作

1、Docker 环境安装

在Linux服务器上安装Docker环境,具体可以参考:在Linux服务器上安装Docker Engine

2、Jenkins 环境安装

在Linux服务器上安装Jenkins,具体可以参考:CentOS下使用Docker安装Jenkins及配置详细教程

3、GitLab 环境安装

在Linux服务器上安装GitLab,具体可以参考:GitLab持续集成发布之一:CentOS7下GitLab安装部署教程

三、打包及部署

一般微服务项目都会有很多个服务,本文以cloud-gateway 微服务的网关module为例来演示

1、打镜像Dockerfile及运行脚本

​ 目前微服务盛行,既然是微服务,大部分都会采用Docker容器部署,这样可以非常快捷的扩容,所以本文也会从打镜像,镜像启动,镜像推送等方面详细的介绍下。

  • 通用版Dockerfile

    FROM java:8
    # 以下4行配置可以去掉,在此展示下,只因项目中与SAP采用Jco3直连的方式,相对应的项目部署环境也需要配置JCO3的环境,
    ADD libsapjco3.so /home/sap/libsapjco3.so
    ADD sapjco3.jar /home/sap/sapjco3.jar
    ENV LD_LIBRARY_PATH /home/sap
    ENV CLASSPATH $CLASSPATH:$LD_LIBRARY_PATH/sapjco3.jar
    
    ADD cloud-gateway-1.1.0-SNAPSHOT.jar /app.jar
    EXPOSE 8001
    ENTRYPOINT ["java", "-jar","/app.jar"]
    
    

    生产环境,可以根据需求在ENTRYPOINT命令行中增加JVM相对应参数的设置

  • 执行脚本

    测试环境一般情况下,都是在一台服务器,启动多个Docker容器,此处将spring.profile.active参数提取出来了,可以做到真正的一包多环境使用,可以参考以下脚本:

    #!/usr/bin/env bash
    group_name='mva-cloud'
    app_name='cloud-gateway'
    app_version='1.1.0-SNAPSHOT'
    profile_active='test'
    echo '----copy jar----'
    # 停止容器
    docker stop ${app_name}
    echo '----stop container----'
    # 删除容器
    docker rm ${app_name}
    echo '----rm container----'
    # 删除镜像
    docker rmi ${group_name}/${app_name}:${app_version}
    echo '----rm image----'
    # 构建新版镜像
    docker build -t ${group_name}/${app_name}:${app_version} .
    echo '----build image----'
    # 启动Docker镜像
    docker run -p 9527:9527 --name ${app_name} \
    -e 'spring.profiles.active'='prod' \
    -e TZ="Asia/Shanghai" \
    -v /etc/localtime:/etc/localtime \
    -v /home/zkgc/mydata/cloud/${app_name}/logs:/home/zkgc/logs/${app_name} \
    -d ${group_name}/${app_name}:${app_version}
    echo '----start container----'
    

    生产环境,一般情况下都需要将打好的镜像推送到docker私有仓库中,所以说每一版都需要有版本号的变化,可以考虑使用时间戳动态版本号,docker私有仓库相关介绍可以参考:Docker | 在CentOS上搭建Docker私有仓库Registry-v2

  • Dockerfile、运行脚本run.sh放到服务器的/home/cloud/test-deploy/cloud-gateway目录,后续通过Jenkins打包的Jar 文件也需要拷贝到该目录,如果需要配置SAP的环境,那对应的jar、so文件都需要拷贝到这一个目录,这样在打镜像的时候,就会把相对应的环境打到镜像里面。

2、Jenkins创建任务

  • 新建一个自由风格的任务

    在这里插入图片描述

  • 配置源码管理

    我这边使用的是GitLab,当然你们使用Github、Gitee都是可以的。

在这里插入图片描述

增加一个访问GitLab的用户名密码

在这里插入图片描述

  • 配置构建

    在构建这个模块下呢,我们主要配置使用Mavenn来进行打包、配置通过SSH执行命令并传输文件等

    • 先打包使用到的通用module。点击增加构建步骤–>调用顶层Maven目标

在这里插入图片描述

说明下:我这个演示项目已经把一些通用的东西抽取出来了,而gateway 是依赖这些通用的module,所以我这会先将这些通用的进行打包,防止在打包gateway的时候,找不到对应的jar包

  • 配置打包cloud-gateway,点击增加构建步骤–>调用顶层Maven目标,具体配置项参考下图:

    在这里插入图片描述

  • 配置执行上面准备好得脚本。点击增加构建步骤–>Send files or execute commands over SSH选项,这个是将打完包得jar包拷贝到指定服务器的指定目录,完成后执行相对应的脚本,具体如下图:

在这里插入图片描述

这个地方,需要提前配置好服务器的凭证信息(在公众号的其他文章有教程,可以翻一下),服务器需要开启ssh访问,我这里是Jenkins与测试服务器不在一起,如果在一起的话,就可以选择只运行脚本命令的那个构建选项即可。

  • 点击保存,这样一个任务就创建完成了。

在这里插入图片描述

想发版的时候,点一下立即构建,Jenkins就会自动从代码仓库拉取最新代码,进行打包,打镜像,启动镜像一键完成了。

另外,前台代码也是可以通过Jenkins来进行一键打包部署的,与后台的稍微有些不同,后续我会单独写一篇文章,来演示下如何进行前台代码的一键打包部署,前台代码使用的是VUE进行演示。

以上,只要你跟着步骤一步步来,完全就可以使用了,剩下的还想添加什么功能自己研究研究玩玩就好啦
欢迎关注公众号私信我,一起探讨,一起学习

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值