Docker系列之Jenkins+Git实现流水线部署SpringBoot项目

2022-08-21 09:49:46

1. 概述

本文使用Docker、Jenkins和Gitee持续部署SpringBoot项目,小伙伴们需要提前准备好Docker和Jenkins开发环境,有不清楚如何安装Docker和Jenkins的小伙伴可以参阅Docker系列之CentOS8安装DockerDocker系列之搭建Jenkins持续集成Maven项目
,其中在Docker安装Jenkins时需要加上–privileged=true和-v /usr/bin/docker:/usr/bin/docker以方便在Jenkins中使用Docker指令。完整的安装指令如下:

jenkins:container_name: jenkinsimage: jenkins/jenkins:lts-jdk11restart: unless-stoppedprivileged:trueports:-'8082:8080'-'50000:50000'volumes:- /home/docker/jenkins:/var/jenkins_home:rw- /var/run/docker.sock:/var/run/docker.sock:rw- /home/soft/maven/apache-maven-3.8.5:/var/java/maven- /var/java/repository:/var/java/repository:rw- /usr/bin/docker:/usr/bin/docker

前提环境要求如下:
JDK:11
Maven:3.8.5
Docker:20.10.14
Jenkins:latest

2. 新建SpringBoot项目

2.1. 引入dockerfile插件

新建一个SpringBoot项目,在pom.xml中引入docker镜像制作插件

<plugin><groupId>com.spotify</groupId><artifactId>dockerfile-maven-plugin</artifactId><version>1.4.13</version><configuration><repository>${project.artifactId}</repository><buildArgs><JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE></buildArgs></configuration></plugin>

2.2. 编写Dockerfile文件

在项目根目录下新建Dockerfile文件,输入以下内容

FROM openjdk:11.0.14.1-oracle
MAINTAINER xxxx
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT["java","-jar","/app.jar"]
EXPOSE 8099

2.3. 编写Jenkins文件

在项目根目录下新建Jenkins文件,输入以下内容

pipeline{
    agent any

    stages{
        stage('pull code'){
            steps{
                checkout([$class:'GitSCM',branches:[[name:'*/master']],extensions:[],userRemoteConfigs:[[credentialsId:'gitee',url:'https://gitee.com/xlhj023/docker-jenkins.git']]])}}
        stage('package and build project, deploy images'){
            steps{
                sh '/opt/app/deploy.sh'}}}}

本文所使用的Jenkins服务器和目标服务器都是同一台服务器,流水线只有拉取代码和部署项目两个步骤,若需要将应用镜像部署到其他服务器,可以将jar包或镜像文件上传到目标服务器,也可以先将镜像推送到镜像仓库,再从目标服务器拉取镜像进行部署

3. 部署脚本deploy.sh编写

进入Jenkins容器内部,在/opt/app目录下新建deploy.sh文件,输入下面shell脚本

#!/bin/bash
project_name=docker-jenkins
tag=latest

imageId=`docker images-q$project_name`echo"镜像ID为:$imageId"if["$imageId"!=""];then
  containerId=`dockerps-a| grep-w$project_name| awk'{print $1}'`echo"容器ID为:$containerId"if["$containerId"!=""];then
    docker stop$containerId
    dockerrm$containerIdecho"删除容器成功"
  fi
  
  docker rmi$imageId
  mvn clean package dockerfile:buildelseecho"构建新镜像"
  mvn clean package dockerfile:build
fi

docker run-di-p 8099:8099$project_name:$tagecho"启动容器成功"

注意,除了第一次部署外,都需要先将原有的镜像和容器删除,再进行镜像制作和容器发布

4. Jenkins发布流水线

新建一个任务,命名为docker-jenkins,选择流水线,点击确定
新建任务
进入流水线制作界面,如下图所示:
流水线
流水线定义处选择Pipeline script from SCM,在SCM处选择Git,输入Git仓库地址和账户信息,最后点击保存,回到Dashboard界面,点击立即构建

5. 验证

任务构建完成后,进入日志管理控制台查看日志信息
日志
进入服务器,输入命令docker images查看镜像
查看镜像
输入命令docker ps查看容器
查看容器

  • 作者:乘着清风写程序
  • 原文链接:https://blog.csdn.net/liu320yj/article/details/124122691
    更新时间:2022-08-21 09:49:46