1. 概述
本文使用Docker、Jenkins和Gitee持续部署SpringBoot项目,小伙伴们需要提前准备好Docker和Jenkins开发环境,有不清楚如何安装Docker和Jenkins的小伙伴可以参阅Docker系列之CentOS8安装Docker和Docker系列之搭建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