使用Jenkins+Pipeline+Docker将Spring Boot应用部署到Tomcat

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cckevincyh/article/details/88584238

安装docker和Kitematic

这里就不细说怎么安装了,不知道怎么安装的可以看看我之前的博文:Docker安装Jenkins实现自动化构建部署到Tomcat,当时用的不是Pipeline流水线的方式进行构建。

我这次依然使用的是kitematic这款软件,但是这款软件的坑真的很多。。看起来一点都不是给小白使用的。所以如果你真的想玩好docker你还是别使用Kitematic这款软件,而已其实根本也不需要Kitematic,只是他提供了一些可视化的界面而已,功能并不是很强大可配置性也不高。但是本文我还是介绍一下Kitematic的使用,以及遇到的一些坑,总结一些经验教训吧。。

安装Jenkins

我们可以通过Kitematic来进行安装Jenkins,这里就遇到了第一个坑。。

在Kitematic中搜索jenkins,你可以看到官方的镜像。
在这里插入图片描述
但是坑的是,官方的镜像在安装一些插件的是会安装不了。。。也不是网络的问题,因为我换过很多其他的国内镜像也是一样的。。
在这里插入图片描述
下面就是一些设置国内镜像的方法:
https://blog.csdn.net/tianhua79658788/article/details/78249908
http://mirrors.jenkins-ci.org/status.html
https://www.cnblogs.com/jtestroad/p/7699826.html

最后看到这个镜像上面的docker hub上的一些评论才发现原来是官方上面版本已经太低了。。
官方的版本居然还是6.2…
在这里插入图片描述
在这里插入图片描述

还有一点坑的是,使用Kitematic如果你点击Volumes,他可以帮你启动文件夹的挂载,挂载到你本地windows电脑,我觉得这一点是十分香的!,但是也有很多坑。
在这里插入图片描述

在这里插入图片描述

缺点好像是就是会重新启动,变成一个新的docker环境,所以最好是在一开始就点了,不然以后点击可能就会把你以前建的docker给毁掉了,变成一个全新的。貌似好像改端口号也是会这样,所以不太人性化,而且端口号也经常变。。

但是如果你以后还是先link到你本地windows的路径怎么办,记住不要点上面的按钮,你可以选择setting,然后选择volumes,然后在点上面的本地路径连接,这种方式就不会造成上面的问题。
在这里插入图片描述

正确安装jenkins

正确安装jenkins直接看这里:

搜索jenkins,下载其他的镜像,推荐下载下面这个
在这里插入图片描述

版本是2.168

在这里插入图片描述

之后就可以创建一个账户了。

在这里插入图片描述

最后保存并完成
在这里插入图片描述

登陆进入之后我们简单了解一下。

正常直接新建项目是不能建立maven项目的,需要下载插件。

在这里插入图片描述

在这里插入图片描述

下载Maven Integration
在这里插入图片描述

之后新建项目的时候就可以选择maven工程了。

不过我们这次的重点是使用Pipline,所以我们要建的是pipline项目,但是在建立项目之前我们需要配置一些jenkins的环境。

配置Maven

因为这个镜像已经默认有java和git的环境了。所以事实上我们只需要安装maven。

我们需要到全局的工具配置上去配置我们的环境。。

在这里插入图片描述

在这里插入图片描述
我们这里直接选择从apache上面下载安装,或者你可以选择自己把maven包通过本地的共享文件下放到你的jenkins的目录下,自己解压安装和配置,使用 linux的命令 ln -s {你的maven路径}/bin/mvn /usr/bin/mvn 或者 ln -s {你的maven路径}/bin/mvn /usr/bin/mvn,最好都配上。。这样就可以在你的docker里面直接使用mvn命令了。
在这里插入图片描述

现在我们先记住你配置的maven的名字,这里我设置的叫maven。

创建Jenkins Pipline 项目

现在我们开始建立一个新项目。这个是我跟同事一起合作的工程,使用groovy写的,这里只是作为demo。
在这里插入图片描述

创建完成之后我们可以开始配置。
这里我只是演示一下轮询吧。。配置一下每分钟扫一次。
在这里插入图片描述

我们可以通过下面两个部分来帮助我们快速的写pipline script,这些就你们自己去研究吧。
在这里插入图片描述

Pipline scrpit的语法我就不跟你们多讲了,网上很多资料,我这是记录一下我自己的构建过程。
参考:
https://blog.csdn.net/diantun00/article/details/81075007

node {
    def maven_home
     stage 'Init'
        maven_home=tool 'maven'
}

这里使用到了tool ‘maven’,意思就是使用我们在上面全局配置的maven工具来进行构建

然后就是拉代码,mvn clean package test,然后就是利用maven 插件进行部署到tomcat
这些都是很简单的一些脚本,通过上面的快速帮助都是可以写出来的,网上也有很多现成的脚本。。

node {
    def maven_home
     stage 'Init'
        maven_home=tool 'maven'
        git branch: 'RELV4.0', credentialsId: 'xxxx', url: 'https://github.com/xxxxx.git'

    stage 'Build'
        echo 'start build project'
        sh "'${maven_home}/bin/mvn' clean package test"
     
    stage 'Deploy'
        echo 'start deploy project'
        sh "'${maven_home}/bin/mvn' tomcat7:redeploy-only"
}

之后我们就可以保存了。

安装Tomact

我们直接在docker上安装。

在这里插入图片描述
直接下载一个,然后之后安装。

配置Tomcat

然后可以使用DOCKER CLI进入我们的tomcat中进行配置,或者可以打开虚拟机,然后进去配置都是一样的。。
在这里插入图片描述
在这里插入图片描述

我们可以使用docker ps查看现在正在运行的docker

在这里插入图片描述
然后我们可以看到docker container id

之后我们可以使用命令 docker exec -u 0 -it 加上你的docker container id再加上/bin/bash,这里加上-u 0就是把你当前的管理员root权限带进docker,让你在docker里面也拥有管理员的权限,不然有很多权限的问题需要处理。。
在这里插入图片描述

然后我们来看看目录:
在这里插入图片描述

我们需要配置几个文件。
关于tomcat的配置,可以参考:

https://blog.csdn.net/weixian52034/article/details/53218584
https://blog.csdn.net/u012316953/article/details/53730907
首先是/conf下面的文件
在这里插入图片描述
可能有的人进来之后发现使用不来linux vim的命令,这个时候可以使用apt-get update来更新,更新完毕之后,使用apt-get install vim命令来下载vim,之后我们就以用vi命令来修改我们的配置文件.

		  <server>tomcat7</server>
          <username>admin</username>
          <password>admin</password>

在这里插入图片描述

之后修改tomcat-user.xml
在这里插入图片描述
其实最好都加上:

<role rolename="admin"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="admin" roles="admin,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status"/>

之后我们就可以重启我们的tomcat了。

之后看看我们项目中的pom.xml上的一些配置。

      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <!-- 注意此处的url,它的值就是第一步中的tomcat发布应用管理页面地址 -->
          <url>http://192.168.99.100:32798/manager/text</url> 
          <server>tomcat7</server> <!-- 此处的名字必须和server.xml中配置的ID一致 -->
          <username>admin</username>
          <password>admin</password>
          <path>/gallery</path>
        </configuration>
      </plugin>

因为我们使用的是spring boot的项目,所以我们的主方法还需要设置。

关于如何把spring boot部署到外部tomcat的配置,可以参考一下下面的链接:

https://blog.csdn.net/eguid_1/article/details/52609600
https://blog.csdn.net/javahighness/article/details/52515226
https://blog.csdn.net/kkgbn/article/details/52061771

主入口需要作如下设置:
在这里插入图片描述
还有需要加上spring boot的maven插件
https://www.cnblogs.com/thinking-better/p/7827368.html

   <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <mainClass>com.cc.gallery.GalleryApplication</mainClass>
        </configuration>
      </plugin>

之后就可以build我们的项目了。。

在build项目的时候发现了如下的错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.1:test (default-test) on project gallery: There are test failures.
[ERROR] 
[ERROR] Please refer to /var/jenkins_home/workspace/gallery-server/target/surefire-reports for the individual test results.
[ERROR] Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
[ERROR] The forked VM terminated without properly saying goodbye. VM crash or System.exit called?

查找了很多原因,最后发现可能是jdk版本的问题导致spring boot依赖的maven-surefire-plugin有问题。

https://stackoverflow.com/questions/23260057/the-forked-vm-terminated-without-saying-properly-goodbye-vm-crash-or-system-exi

https://stackoverflow.com/questions/53010200/maven-surefire-could-not-find-forkedbooter-class

https://blog.csdn.net/TeamLeader_08/article/details/78543663

https://blog.csdn.net/while_insist/article/details/85265701

在这里插入图片描述

所以我们要做的就是升级一下插件的版本。

	<plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>3.0.0-M1</version>
      </plugin>

之后就可以再次build一下我们的项目了。。

然后就可以看到我们的项目build success了。。

在这里插入图片描述

tomcat中spring boot也启动了。。

在这里插入图片描述

之后我们还可以配置一个build monitor view插件

在这里插入图片描述

之后就可以创建我们自己的view
在这里插入图片描述

然后添加我们的项目。。

在这里插入图片描述

最后完成。。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/cckevincyh/article/details/88584238