使用 Docker + Jenkins + Gitlab + Maven 自动化部署 Spring Boot

Jenkins 是 Devops 神器,本文介绍如何安装和使用 Docker + Jenkins + Gitlab + Maven 自动化部署 Spring Boot 项目。

一 准备环境

Centos 7.6
JDK 1.8
Jenkins 2.238 
Maven 3.5.4
Docker 19 
Maven默认已经安装完成;
Jdk默认已经安装完成;

Docker 安装教程

Docker 安装常用软件教程

更多详情参考我另外一篇博客

二 Jenkins 插件安装和全局环境配置

2.1 插件安装

有很多插件都是选择的默认的安装的,所以现在需要我们安装的插件不多,Git plugin 和 Maven Integration plugin、publish over SSH、Deploy to container、Subversion

插件安装:系统管理 > 插件管理 > 可选插件,勾选需要安装的插件,点击直接安装或者下载重启后安装。

2.2 全局安全配置

管理Jenkins > 配置全局安全性 > 可选插件,勾选需要安装的插件,点击直接安装或者下载重启后安装。

1)没有权限配置,只要登录就可以操作

2)配置权限,登录账号经过赋权才能有操作权限

2.3 全局工具配置

1)Maven 配置

2)JDK 配置

3)查看 maven 和 jdk 安装目录命令

echo $MAVEN_HOME
echo $JAVA_HOME

三 目标发布服务器配置

使用用户名+密码方式登录目标发布服务器

管理Jenkins > 系统配置

点击高级添加root账号密码

四 使用 Dockerfile 构建项目

5.1 jar上传到服务器目录下

 5.2 使用 Dockerfile 构建镜像:vim Dockerfile

# 该镜像需要依赖的基础镜像
FROM java:8
# 指定维护者的名字
LABEL maintainer=lc
# 定义匿名数据卷
VOLUME /tmp
# COPY 复制资源到容器中
COPY cloud-token-upms-0.0.1-SNAPSHOT.jar /app/ccloud-token-upms-0.0.1-SNAPSHOT.jar
COPY application.properties application.properties
# 指定docker容器启动时运行jar包和配置文件
ENTRYPOINT ["java","-Xms256m", "-Xmx256m","-jar","/app/cloud-token-upms-0.0.1-SNAPSHOT.jar","--spring.config.location=/application.properties","-Dfile.encoding=UTF-8"]

5.3 编写容器自动化脚本

#!/bin/bash
# 定义应用组名
group_name='cloud'
# 定义应用名称
app_name='upms'
# 定义应用版本
app_version='0.0.1-SNAPSHOT'
# 定义应用环境
profile_active='qa'
echo '----copy jar----'
# 停止容器
docker stop ${app_name}
echo '----stop container----'
# 删除容器
docker rm ${app_name}
echo '----rm container----'
# 删除镜像
docker rmi ${group_name}/${app_name}:${app_version}
echo '----rm image----'
# 打包编译docker镜像
docker build -t ${group_name}/${app_name}:${app_version} .
echo '----build image----'
# 启动容器
docker run -p 8844:8844 --restart=always --name ${app_name} -v /home/project/jar/logs:/logs -d ${group_name}/${app_name}:${app_version}
echo '----start container----'

五 构建项目

首页点击新建:输入项目名称

下方选择构建一个 Maven 项目,点击确定。

勾选丢弃旧的构建,选择是否备份被替换的旧包。我这里选择备份最近的10个

源码管理,选择 Git,配置 Git 相关信息,点击 add 可以输入 Git 的账户和密码

 点击添加,可以添加 Git 账号和密码

在 Build 中输入打包前的 mvn 命令,如:

clean install -Dmaven.test.skip=true -Ptest

意思是:排除测试的包内容,使用后缀为 test 的配置文件。

点击高级可以配置maven

Post Steps 选择 Run only if build succeeds

点击Add post-build step,选择 Send files or execute commands over SSH

Name 选择上面配置的 Push SSH

Source files配置:target/xxx-0.0.1-SNAPSHOT.jar 项目jar包名

Remove prefix:target/

Remote directory:代码应用服务器的目录地址

Exec command:程序启动脚本

脚本内容:

DATE=$(date +%Y%m%d)
scp /opt/jar/upms/cloud-token-upms-0.0.1-SNAPSHOT.jar /opt/jar/upms/backup/cloud-token-upms-0.0.1-SNAPSHOT.jar-$DATE
scp /opt/jar/upms/tempjar/cloud-token-upms-0.0.1-SNAPSHOT.jar /opt/jar/upms/cloud-token-upms-0.0.1-SNAPSHOT.jar
cd /opt/jar/upms
sh run.sh

这段脚本的意思,生成当前日期备份旧jar,把最新的jar放在启动目录中。在进入启动目录执行 run.sh

注意xxxx.jar地址,因为用命令启动需要去找jar包,目前jenkins直接打在默认目录了,没有进行自定义设置,故如此配置。

六 立即构建且验证

1)点击立即构建

2)控制台输出,查看启动日志

3)登录发布目标服务器,通过命令形式查看进程是否起来,命令如下

4)查看镜像

 5)查看容器

 至此 使用Docker + Jenkins + Gitlab + Maven 自动化部署 Spring Boot 借此结束。

DockerJenkinsGitLabMaven、Harbor和Spring Boot是一些常用的IT工具和技术,可以用于实现自动化构建和部署Docker是一个开源的容器化平台,可以将应用程序及其依赖项打包到容器中,从而实现应用程序的快速部署和隔离。使用Docker可以方便地创建、分享和管理应用程序的容器化版本。 Jenkins是一个开源的持续集成和持续交付工具,可以帮助团队自动化构建、测试和部署应用程序。使用Jenkins可以通过配置和管理各种构建和部署任务,从而实现自动化的软件开发流程。 GitLab是一个基于Git的代码托管和协作平台,可以帮助团队协同开发、管理代码和进行版本控制。使用GitLab可以方便地管理代码仓库、进行代码审查和版本管理。 Maven是一个软件项目管理和构建工具,可以帮助团队自动化构建、测试和部署Java项目。使用Maven可以方便地管理项目依赖、编译代码、运行单元测试等构建任务。 Harbor是一个开源的企业级Docker镜像仓库,用于管理和存储Docker镜像。使用Harbor可以方便地管理镜像的推送、拉取和版本控制。 Spring Boot是一个轻量级的Java开发框架,可以帮助开发者快速构建和部署基于Spring的应用程序。使用Spring Boot可以简化项目配置和管理,提高开发效率。 将这些工具结合使用,可以实现自动化构建和部署。例如,可以使用Jenkins配置一个定时任务,当代码提交到GitLab时,Jenkins会自动触发构建任务。构建任务可以使用Maven编译、打包和测试应用程序,然后使用Docker将应用程序打包成容器镜像,并推送到Harbor中。最后,使用Docker将应用程序部署到服务器上进行运行。这样,我们就可以实现应用程序的自动化构建和部署,提高开发和交付效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十点摆码

有用你就打赏一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值