linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)

              linux中springboot+maven+gitee+jenkins

                            持续集成全docker化部署

摘要

下面我将会详细介绍我的部署过程,其中遇到的一些坑或者关键点会用红字加粗标识,希望大家开心学习快乐每一天。

本篇文章是基于有完整开发项目能力却缺乏部署知识的开发人员学习分享,偏向于运维,小白的话可以边查找资料学习完成环境开发等搭建后再进行学习。

示例:www.cjjtools.com

也可以加QQ交流群:1065452972

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第1张图片

 

 

1、准备Linux服务器(centos7)

我的服务器是腾讯云,配置如下:

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第2张图片

 

2、windows开发环境搭建

开发软件:idea2020.1

开发语言:java(jdk1.8.0_221)

开发框架:Springboot+apache-maven-3.6.3

代码版本管理:git(gitee也是用的git)

以上都是一些必须且基础的环境,搭建方法就不再详细说明了

2.1、git或者gitee搭建(我用的是gitee所以我这里搭建gitee)

  • 进入官网:https://gitee.com/
  • 注册或者登陆账号进入工作台,并按照以下步骤创建一个仓库

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第3张图片

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第4张图片

点击创建完成后进入仓库

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第5张图片

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第6张图片

执行以下代码,进行git项目初始化到远程gitee

一、初始化并创建本地git仓库

git init

二、将所有代码添加到本地仓库

git add .

三、添加提交时的注释

git commit - m "第一次提交" 

四、将git进行远程连线

git remote add origin https://gitee.com/*********(您刚刚复制的那个gitee项目地址)

五、推代码更新远程仓库

git push -u origin master

至此就完成了将项目和gitee进行关联的操作

2.2、连接Linux服务器

这里我们使用Xsell6进行对服务器的连接,大家可以取官网上申请家庭或学校版的Xshell(目前好像很多网上的破解版都用不了了)

获取方法:

进入网站:https://www.netsarang.com/zh/free-for-home-school/linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第7张图片

安装完成后进入xshell连接您的服务器

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第8张图片

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第9张图片

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第10张图片

2.2、Linux服务器环境配置

将要配置的环境(此处的jdk和maven版本最好跟windows一样,避免不必要的错误):

docker: docker的安装我之前写过一篇文章:https://blog.csdn.net/q903249871/article/details/103275533

(不了解docker的也可以看一下docker的入门理解:https://blog.csdn.net/q903249871/article/details/103295332)

jdk:jdk1.8.0_221

maven:apache-maven-3.6.3

注:jdk和maven这种共用的环境直接安装到本地即可,不需要进行docker化,下面的docker容器里如需用到,运行时进行挂载即可使用到,就不在docker容器中再进行重复安装了,节省空间。

Jenkins:docker化镜像版本:jenkinsci/blueocean

mysql:docker化镜像版本:mysql

下面进行这些环境的安装介绍:

jdk配置:

到官网中下载:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第11张图片

打开xshell点击xftp进行文件传输

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第12张图片

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第13张图片

tar -zxvf xxx

然后开始配置jdk环境变量

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第14张图片

set java environment
JAVA_HOME=/usr/java/jdk1.8.0_221
JRE_HOME=/usr/java/jdk1.8.0_221/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

粘贴完成后按esc后输入:wq退出编辑

执行以下代码重新加载配置文件,使环境生效

source  /etc/profile

输入java -version查看到以下输出,表示jdk配置成功

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第15张图片

maven配置:

到官网中下载:http://maven.apache.org/download.cgi

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第16张图片

下载完成后,跟jdk的操作方式一样,先拉到linux服务器对应的位置进行解压,然后配置环境变量保存刷新

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第17张图片

export MAVEN_HOME=/usr/maven/apache-maven-3.6.3

export PATH=$MAVEN_HOME/bin:$PATH

刷新后输入

mvn -v

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第18张图片

maven环境配置成功

mysql的docker镜像下载并运行

参考我的另一篇文章https://blog.csdn.net/q903249871/article/details/106380566

jenkins的镜像安装

直接输入以下命令拉取jenkins

docker pull jenkinsci/blueocean

拉取成功后执行运行镜像

docker run -u root --rm -d -p 8080:8080 -p 50000:50000 -v /var/run/docker.sock:/var/run/docker.sock -v /usr/java/jdk1.8.0_221:/usr/java/jdk1.8.0_221 -v /usr/maven/apache-maven-3.6.3:/usr/maven/apache-maven-3.6.3 -v /usr/maven/maven-repository:/usr/maven/maven-repository -v /usr/webtools/jenkins/data:/var/jenkins_home  jenkinsci/blueocean

注释(左边为你的服务器路径,右边为容器内路径):

-v /var/run/docker.sock:/var/run/docker.sock 挂载docker的守护进程,容器内部也能调用docker命令,且与外部docker同步

-v /usr/java/jdk1.8.0_221:/usr/java/jdk1.8.0_221 挂载为使用容器外部的jdk

-v /usr/maven/apache-maven-3.6.3:/usr/maven/apache-maven-3.6.3 挂载为使用容器外部的maven

-v /usr/maven/maven-repository:/usr/maven/maven-repository 挂载为使用容器外部的maven仓库

-v /usr/webtools/jenkins/data:/var/jenkins_home 把jenkins的文件同步挂载到你的服务器

运行成功后访问Jenkins地址:127.0.0.1:8080

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第19张图片

下一步点安装推荐的插件,等待大概几分钟到十几分钟(取决于你服务器的网速)

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第20张图片

创建新管理员用户(下次就用这个用户登陆)

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第21张图片

此时就能进入到工作台界面了

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第22张图片

第一步先配置你的全局变量

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第23张图片

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第24张图片

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第25张图片

安装Jenkins对应Maven插件,插件名称Maven Integration

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第26张图片

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第27张图片

再安装对应的gitee插件

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第28张图片

等待安装完成

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第29张图片

完成后返回jenkins,点击新建任务

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第30张图片

创建一个流水线任务

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第31张图片

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第32张图片

我的pipeline脚本如下:

node {
  // 每一个stage都是一个步骤
  stage('git checkout') {  // 这一串是用来从gitee上拉取代码的,怎么来的我下面会说
        checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'xxxxxxxxxx', url: 'https://gitee.com/xxxxxxxxxx']]])

        echo 'git checkout ok'  // 日志而已
  }
  
  def mvnHome = tool 'maven-3.6.3'// 这里的名字是上面配置的全局配置别名
  def javaHome = tool 'java_1.8.0_221'// 这里的名字是上面配置的全局配置别名
  env.PATH = "${mvnHome}/bin:${javaHome}/bin:${env.PATH}" // 配置环境变量

  stage('mvn build') { 
      echo 'mvn build start'


      sh 'mvn clean package -Dmaven.test.skip=true -U' // 用maven打包你刚刚拉取到的项目

      echo 'mvn build ok'  
  }
  
  stage('docker build and run') {
      sh 'docker rm -f webtools-8088||true' // 用maven打包你刚刚拉取到的项目
      sh 'docker rmi webtools-8088||true'
      sh 'docker build -t webtools-8088 .'

      sh 'docker run -p 8088:8088 --privileged=true -v /usr/webtools/server/logs:/logs -v /usr/webtools/server/upload:/upload -v /usr/share/fonts:/usr/share/fonts --name webtools-8088 -d webtools-8088' 

      echo 'docker docker run ok'  
  }
}


checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'xxxxxxxxxx', url: 'https://gitee.com/xxxxxxxxxx']]])
这一句话是使用下面方法生成的

 linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第33张图片

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第34张图片linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第35张图片

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第36张图片

      sh 'docker rm -f webtools-8088||true' //这一句话是强行删除对应名字的容器,-f表示无论在不在跑都删除,||true是为了防止没有对应名字的容器,导致语句报错后也继续往下执行


      sh 'docker rmi webtools-8088||true' //这一句话是删除对应名字的镜像,||true是为了防止没有对应名字的镜像,导致语句报错后也继续往下执行


      sh 'docker build -t webtools-8088 .' //这一句话创建这个名字的镜像;这里要说明一下,我的Dockerfile是放在了项目的根目录下面的,而现在执行pipeline语句的路径就是在项目的根目录下,所以我可以直接写一个.(当前目录寻找Dockerfile的意思)他就会找到这个Dockerfile

      sh 'docker run -p 8088:8088 --privileged=true -v /usr/webtools/server/logs:/logs -v /usr/webtools/server/upload:/upload -v /usr/share/fonts:/usr/share/fonts --name webtools-8088 -d webtools-8088' // 我这里因为功能需要,我是有导入导出功能的,并且要用到服务器的字体库,所以我挂载了一个/usr/webtools/server/upload(我的上传下载目录),/usr/share/fonts服务器的字体库

写好之后点击应用保存 

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第37张图片

现在就可以开始构建啦!

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第38张图片

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第39张图片

最后祝大家好好学习天天向上,再推一遍群号

QQ交流群:1065452972

linux中springboot+maven+gitee+jenkins持续集成全docker化部署(详细版)_第40张图片

你可能感兴趣的:(Docker,Centos,linux)