Docker+Jenkins实现springboot项目发布

前言

我们在编写springboot项目在面临发布到测试环境或者其它非本地开发环境时,使用的全是java -jar之类的命令行,或者使用dockerfile进行镜像的生成而后在宿主机上使用docker run …命令运行一个docker容器,从而提供服务。上述的两种情况是最简便的发布方式,但是其中的繁琐也可想而知,那么有什么方式可以简化其中发布的步骤呢,可以持续进行发布项目,答案就是今天的Jenkis。

关于Jenkins

网上有很多关于Jenkins的介绍,这里我就不多阐述Jenkis到底有多强大,感兴趣的童鞋可以移步:link.

1.安装Jenkins

关于如何在本机安装,本文暂不给出方法,因为网上的资料很全,本文章介绍如何通过docker进行安装Jenkis。
在安装Jenkins之前,需要童鞋们的机器上已经安装了docker。在安装了docker之后只需要一条命令就可以在你的机器上跑上Jenkins:
docker run --name Jenkins -u root -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --network bridge -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime jenkinsci/blueocean

不出意外现在你的机器上就有一个Jenkis容器啦,恭喜你完成了第一步。现在访问对应的端口(127.0.0.1:8080)就可以看到Jenkis正在初始化的界面。
Jenkis正在初始化
初始化完成之后,Jenkis需要你输入密码
在这里插入图片描述
注意:如果是在本机安装的Jenkis的话,直接在宿主机上执行:
cat /var/jenkins_home/secrets/initialAdminPassword
就可以获取对应的密码。但现在我们的Jenkis是跑在docker容器中的,所以我们需要执行
docker exec -it containerId /bin/bash
进入容器内部之后再执行上面查看密码的命令。
在这里插入图片描述
获得到密码之后,直接复制粘贴进输入框,点击继续。
在这里插入图片描述
这里我选择第一个安装推荐插件。选择了之后Jenkis会给你安装一些插件,这个过程完成后Jenkis会重新启动,等待一会之后
在这里插入图片描述
在这里你可以设置你的登录用户信息,密码自己记住就好。后面就直接下一步就好,完成之后就直接到了主页面,这个时候你就可以开始你的表演了。
在这里插入图片描述

2.安装插件

刚刚上面完成了docker Jenkis的安装,接下来我们就需要开始干正事了,那就是如何发布一个springboot项目呢?首先我们得安装几个插件才可以。
注:作者这里的Jenkis版本,里面是没有docker,maven等相关插件的,因为一开始安装插件是系统推荐的。

2.1安装maven插件

步骤:系统管理—>插件管理---->可选插件
搜索maven,选择下面这个插件进行安装
在这里插入图片描述

2.2安装docker插件

搜索docker,选择下面这些插件进行安装
在这里插入图片描述
选择安装之后,系统会进行安装你所选的插件,随后重启Jenkis。

3.配置软件

这个步骤是可选的,主要根据你的项目的JDK版本,Maven版本来决定。因为作者这里使用的jdk版本是jdk11,maven版本是maven3.8.1,所以需要重新安装这些软件。

3.1配置maven

步骤:系统管理—>全局工具配置---->maven安装
在这里插入图片描述
这里有很多版本,选择你项目中使用的版本即可。

3.2配置jdk

jdk安装有很多种方式,比如从Oracle安装:
在这里插入图片描述
但因为这里没有作者想要的jdk11版本的jdk,所以我选择了安装openjdk:
在这里插入图片描述
大家可以从这个地址获取到飞速的openjdk下载地址:openjdk: link.
选择你需要的jdk,然后将链接复制到上面的下载URL地址栏中。
在这里插入图片描述

随后点击应用,然后保存就好了。

4.配置项目

终于终于到了干正经事的时候啦,我们要把我们的springboot项目通过Jenkis发布跑起来,看到这里的童鞋可以给自己鼓个掌哈。加油加油!!!

4.1新建任务

回到jenkis主页,然后点击新建任务按键,进入新建任务的页面
在这里插入图片描述
这里我们选择构建一个maven项目。PS:因为作者是用maven来管理项目的。然后给你的任务取个名字,比如:xxx管理系统后端服务之类的。然后点击确定。

4.2配置项目

在上一步点击了确定之后,我们就到了配置项目的页面,在这里我们可以配置我们的源码地址用于定时构建或者触发构建,配置我们的maven build的参数,还有一些前置步骤和后置步骤的东东了,本文就以最简单细致的方式让大家能够跟着作者完成自己的Jenkis部署,所以涉及到的一些高级的功能,比如上面说的定时构建和触发构建,就留给大家去摸索,我暂时就不带大家去实践了,毕竟只有自己摸索过一遍之后,这些知识才能真正进入自己的脑袋。

这里我们填写自己的GIT项目地址,注意,下面的Credentials需要你去新增一个用于git项目验证的用户和密码。填写完之后,稍微等一下,Jenkis会自动去校验你所填写的git地址和Credentials是否正确,如果下面出现一堆红色的东东,就需要你自己检查一下你的git地址和Credentials是否是正确的。像作者这样说明是成功的。

在这里插入图片描述
随后我们就来到构建触发器这一步,这一步就是需要你做一些前置的工作了,比如作者是用docker跑的springboot项目,那么在重新构建项目的时候,我就需要把以前的容器和镜像清理一波。

#!/bin/bash

echo "stop old docker container"

docker stop xxx

echo "delete old docker container"

docker rm xxx

echo "delete old docker images:"

docker rmi xxx:latest

echo "clean success"

在这里插入图片描述
然后就是Build步骤
这里我们选择root pom.xml
然后在Goals and options 填入你在打包的时候需要执行的命令参数,比如我们在本地开发的时候是这么执行的:
mvn clean package -Dmaven.test.skip=true -P test
所以类似的我们在Goals and options 填入 clean package -Dmaven.test.skip=true -P test就好了。
在这里插入图片描述

接下来就是Post Steps阶段了,因为上面的pre steps 和 build 环节我们都把我们的环境清理了一下,也把我们的jar包都打好了,接下来就是根据上面的东西进行真正的构建和发布了。
首先我们是使用docker来运行我们的程序的,所以第一步就是让docker根据我们程序里的dockerfile构建我们新的镜像(PS:这里插一句啊,如果不了解docker的可以去菜鸟教程上学一下docker基本使用,这里不做讲解哈。)
在这里插入图片描述
上面的步骤完成后,就来到了最后一步了,也就是把我们构建好的镜像运行起来,当然,这一步也还是通过脚本的方式去做。如下图所示:
脚本:

#!/bin/bash

echo "current docker images:"

docker images | grep xxx

echo "start container----->"

docker run xxx

echo "start success!"

在这里插入图片描述
不出意外的话,我们就会看到Jenkis在快速的帮我们构建的我们应用,最终效果是这样的:
在这里插入图片描述
当当当当!恭喜你,你已经使用docker+jenkis半自动化的部署了一个springboot的应用啦。为什么说是半自动呢,因为我们跳过了使用Git实现触发构建或者定时构建的功能,所以,我们在每次提交代码的时候,还是需要到Jenkins中选择对应的任务(项目)点击立即构建来重新构建我们的应用,使得刚刚提交的代码能够更新我们的应用程序。但总体来说会比手动去打jar包,然后登陆到服务器上,kill掉当前的应用程序,上传jar包,再重新java -jar…要方便亿点。

5.可能遇到的问题

其实程序员就是每天生活在问题之中,有些问题能Google的到,但是很多问题其实还是需要自己去刨根的,大部分应用在出错时,错误信息都很明确,如果你确实没法看出来是什么错误,建议先上对应的官网去找找,然后再去Google,那样你自己才会对这样的问题更加深刻,而不会一遍一遍的去Google重复的问题。
作者之所以把可能遇到的问题放在最后,就是想大家能够在自己实践的时候出了问题能够靠自己的聪明的小脑袋瓜去找到解决方案。
那我们就来看看使用docker+Jenkins部署应用的时候会遇到哪些问题吧。

5.1jdk找不到的问题

由于前面是我们自己安装的jdk到Jenkins_home里面的,所以在构建应用的时候,会出现这样的问题:

在这里插入图片描述
这是因为我们通过url链接让Jenkins自己去UNpacking下载下来的jdk的压缩包,所以解压出来的目录结构是会多包含一层目录的(比如:openjdk_11_xxxx),所以这里Jenkins去/var/jenkins_home/tools/hudson.model.JDK/jdk11/bin目录下去找java可执行文件是找不到的,所以我们要把openjdk_11_xxxx目录去掉,可以使用cp -r 的命令把openjdk_11_xxxx目录里的文件拷贝到/var/jenkins_home/tools/hudson.model.JDK/jdk11里面,然后删除/var/jenkins_home/tools/hudson.model.JDK/jdk11/里面的openjdk_11_xxxx(这是openjdk解压后的目录),这样子Jenkins去找的时候就能正确找到java啦。

5.2docker URI 错误的问题

前面在安装docker插件的时候,作者并没有把docker的相关配置给贴出来,这会导致一个docker URI找不到的问题:
在这里插入图片描述
所以我们要去配置一下我们的docker路径,因为我们宿主机上安装了docker,所以只需要把docker的.sock文件指定一下就好,但如果是想在远程的机器上执行呢?这个问题就留给聪明的你解决吧。我们先看看在本机上如何解决这个问题吧。
步骤:系统管理—>系统配置—>Cloud
在这里插入图片描述
点击 The cloud configuration has moved to a separate configuration page进入如下界面,在
Docker Host URI这一栏填入unix:///var/run/docker.sock,之后别忘记测试一下是否连接成功哈。
在这里插入图片描述

结束语

感谢大家能够耐着性子看完,整篇文章全是作者一个字一个字码出来的,图也是作者一个一个的截,还要手动马赛克,作者本人也是才疏学浅,其中有些地方写的不对的,还望各位大佬能够多多批评指正。谢谢大家的支持!也欢迎大家转发!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DockerJenkins、GitLab、Maven、Harbor和Spring Boot是一些常用的IT工具和技术,可以用于实现自动化构建和部署。 Docker是一个开源的容器化平台,可以将应用程序及其依赖项打包到容器中,从而实现应用程序的快速部署和隔离。使用Docker可以方便地创建、分享和管理应用程序的容器化版本。 Jenkins是一个开源的持续集成和持续交付工具,可以帮助团队自动化构建、测试和部署应用程序。使用Jenkins可以通过配置和管理各种构建和部署任务,从而实现自动化的软件开发流程。 GitLab是一个基于Git的代码托管和协作平台,可以帮助团队协同开发、管理代码和进行版本控制。使用GitLab可以方便地管理代码仓库、进行代码审查和版本管理。 Maven是一个软件项目管理和构建工具,可以帮助团队自动化构建、测试和部署Java项目。使用Maven可以方便地管理项目依赖、编译代码、运行单元测试等构建任务。 Harbor是一个开源的企业级Docker镜像仓库,用于管理和存储Docker镜像。使用Harbor可以方便地管理镜像的推送、拉取和版本控制。 Spring Boot是一个轻量级的Java开发框架,可以帮助开发者快速构建和部署基于Spring的应用程序。使用Spring Boot可以简化项目配置和管理,提高开发效率。 将这些工具结合使用,可以实现自动化构建和部署。例如,可以使用Jenkins配置一个定时任务,当代码提交到GitLab时,Jenkins会自动触发构建任务。构建任务可以使用Maven编译、打包和测试应用程序,然后使用Docker将应用程序打包成容器镜像,并推送到Harbor中。最后,使用Docker将应用程序部署到服务器上进行运行。这样,我们就可以实现应用程序的自动化构建和部署,提高开发和交付效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值