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

导读:本篇文章讲解 Docker系列之Jenkins+Git实现流水线部署SpringBoot项目,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

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: jenkins
    image: jenkins/jenkins:lts-jdk11
    restart: unless-stopped
    privileged: true
    ports:
      - '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=`docker ps -a | grep -w $project_name | awk '{print $1}'`
  echo "容器ID为:$containerId"
  if["$containerId" != ""];then
    docker stop $containerId
    docker rm $containerId
    echo "删除容器成功"
  fi
  
  docker rmi $imageId
  mvn clean package dockerfile:build
else
  echo "构建新镜像"
  mvn clean package dockerfile:build
fi

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

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

4. Jenkins发布流水线

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

5. 验证

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/76766.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!