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

5 篇文章 0 订阅
3 篇文章 0 订阅

              linux中springboot+maven+gitee+jenkins

                            持续集成全docker化部署

摘要

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

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

示例:www.cjjtools.com

1、准备Linux服务器(centos7)

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

2、windows开发环境搭建

开发软件:idea2020.1

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

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

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

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

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

点击创建完成后进入仓库

执行以下代码,进行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/

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

2.2、Linux服务器环境配置

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

docker: docker的安装我之前写过一篇文章:Docker安装与配置_小城里的梦想的博客-CSDN博客

(不了解docker的也可以看一下docker的入门理解:Docker入门理解_小城里的梦想的博客-CSDN博客_dcoker 入门理解

jdk:jdk1.8.0_221

maven:apache-maven-3.6.3

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

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

mysql:docker化镜像版本:mysql

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

jdk配置:

到官网中下载:Java Archive Downloads - Java SE 8u211 and later

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

tar -zxvf xxx

然后开始配置jdk环境变量

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配置成功

maven配置:

到官网中下载:Maven – Download Apache Maven

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

MAVEN_HOME=/usr/maven/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH

刷新后输入

mvn -v

maven环境配置成功

mysql的docker镜像下载并运行

参考我的另一篇文章linux中docker安装mysql镜像_小城里的梦想的博客-CSDN博客

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

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

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

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

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

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

再安装对应的gitee插件

等待安装完成

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

创建一个流水线任务

我的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']]])
这一句话是使用下面方法生成的

 

      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服务器的字体库

写好之后点击应用保存 

现在就可以开始构建啦!

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值