作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是,产生了写一个博客专栏想法,介绍当前互联网企业JAVA项目开发如何快速入门。
本文收录于《30天企业JAVA项目开发实战入门》专栏,该专栏内容以当前互联网软件企业中的项目实战为线索,介绍企业JAVA项目开发中涉及到的开发流程、技术、工具、规范要求等等。帮助想从事JAVA开发的大学生或新人,更快、更好的入门JAVA后端开发工作。
文章目录
- 一、前言
- 二、准备资源
- 三、配置项目的阿里云镜像仓库
- 四、编写项目dockerfile和docker-compose文件
- 五、编写项目发布shell脚本
- 六、配置项目的Jenkins任务
- 七、执行项目的Jenkins任务,实现自动化部署
- 八、总结
一、前言
本文介绍如何通过Jenkins配置后端工程进行自动化部署。这里以若依Spring-cloud后端工程为示例,介绍如何通过Jenkins配置若依Spring-cloud后端工程,实现自动化发布部署到服务器上。
首先,梳理一下,我们要实现的自动化发布部署的流程如下:
1)首先,使用git从远程代码仓库中拉取最新的代码;
2)之后,使用jdk、maven对代码进行编译打包;
3)之后,根据定义的dockfile文件,生成对应的docker镜像;
4)之后,把docker镜像推送到harbor远程镜像仓库中;
5)之后,从harbor远程镜像仓库中拉取docker镜像;
6)最后,使用对应的docker镜像,启动docker容器。至此,自动化发布部署完成。
二、准备资源
1)环境要求
CentOS7.9 64位、JDK1.8、Tomcat8.5.87、maven3.3.1、Git1.8、Jenkins2.260
2)服务器资源购买
阿里云ECS服务器172.22.187.36(安装Jenkins等第三方应用)、阿里云ECS服务器172.22.187.40(部署Spring-cloud项目)、阿里云RDS Mysql服务器(部署项目数据库)
3)服务器上应用安装清单
Redis服务器,安装参考见本专栏链接:https://blog.csdn.net/u012171005/article/details/137829140
Nacos服务器,安装参考见本专栏链接:https://blog.csdn.net/u012171005/article/details/137886006
Jenkins发布工具,安装参考见本专栏链接:https://blog.csdn.net/u012171005/article/details/138182743
Docker容器工具,安装参考见本专栏链接:https://blog.csdn.net/u012171005/article/details/137435897
Ansible部署工具,安装参考见本专栏链接:https://blog.csdn.net/u012171005/article/details/138136832
4)其他资源
代码仓库使用码云gitee,RuoYi-Cloud代码下载地址:https://gitee.com/y_project/RuoYi-Cloud
镜像仓库使用阿里云仓库,阿里云仓库地址:https://cr.console.aliyun.com/cn-shanghai/instances
三、配置项目的阿里云镜像仓库
首先,登录阿里云控制台,创建一个自己的镜像仓库实例;
之后,新增一个项目对应的命令空间;
之后,为项目中不同的微服务,创建对应的镜像仓库;
最后,当我们把镜像推送到仓库中后,可以在“镜像版本”列表中,查看到对应的推送记录;
四、编写项目dockerfile和docker-compose文件
dockerfile文件定义如下:(以ruoyi-system后端服务为示例)
# 基础镜像
FROM openjdk:1.8
# author
MAINTAINER ruoyi
# 挂载目录
VOLUME /home/ruoyiv
# 创建目录
RUN mkdir -p /home/ruoyi
# 指定路径
WORKDIR /home/ruoyi
# 复制jar文件到路径
COPY ./ruoyi-modules-system.jar /home/ruoyi/ruoyi-modules-system.jar
# 启动系统服务
ENTRYPOINT java ${JAVA_OPTS} -jar ruoyi-modules-system.jar
docker-compose文件定义如下:(以ruoyi-system后端服务为示例)
version: "2"
services:
ruoyi-system:
restart: always
image: registry-vpc.cn-shanghai.aliyuncs.com/ruoyi_project/ruoyi-system
ports:
- "9201:9201"
container_name: ruoyi-system
mem_limit: 1.5g
environment:
- JAVA_OPTS=-Xmx1g -Xms1g
- SPRING_PROFILES_ACTIVE=dev
五、编写项目发布shell脚本
docker镜像创建、推送、启动相关的Shell脚本定义如下:(以ruoyi-system后端服务为示例)
####步骤一、开始服务器A操作
#cd到项目jar包所在目录下
cd /root/.jenkins/workspace/ruoyi-system/ruoyi-modules/ruoyi-system/target
#创建docker镜像
docker build -t registry-vpc.cn-shanghai.aliyuncs.com/ruoyi_project/ruoyi-system:latest -f /root/.jenkins/workspace/ruoyi-system/ruoyi-modules/ruoyi-system/src/main/resources/dockerfile .
#登录docker镜像仓库,PS:可以先手执行镜像仓库的登陆命令,后续就不需要重复登录了
docker login --username=你的镜像仓库登陆账号名 registry-vpc.cn-shanghai.aliyuncs.com
#给docker镜像打tag
docker tag registry-vpc.cn-shanghai.aliyuncs.com/ruoyi_project/ruoyi-system registry-vpc.cn-shanghai.aliyuncs.com/ruoyi_project/ruoyi-system:latest
#推送docker镜像到仓库中
docker push registry-vpc.cn-shanghai.aliyuncs.com/ruoyi_project/ruoyi-system:latest
####步骤二、通过ansible工具,开始服务器B操作
#拉取docker镜像
ansible 172.22.187.40 -m command -a 'docker pull registry-vpc.cn-shanghai.aliyuncs.com/ruoyi_project/ruoyi-system:latest'
#使用镜像启动docker容器
ansible 172.22.187.40 -m command -a 'docker-compose -f /opt/ruoyi/docker-compose.yml up -d ruoyi-system'
六、配置项目的Jenkins任务
下面开始新建和配置Jenkins任务。(以ruoyi-system后端服务为示例)
首先,新增一个Maven任务;
之后,输入任务名称,选择任务类型为Maven,点击确定;
之后,填写任务描述;
之后,配置丢弃旧的构建参数;
之后,配置源码管理中git参数;
之后,配置Maven编译参数;
之后,配置要执行的shell脚本;
最后,点击应用保存按钮,完成任务创建。
七、执行项目的Jenkins任务,实现自动化部署
Jenkins任务创建完成后,下面可以使用Jenkins的自动构建功能,执行自动化发布任务。
选择要发布的任务,点击立即构建。
之后,查看控制台输出信息;
最后,如果控制台输出Success字样,说明自动构建成功,发布任务完成了。
八、总结
以上介绍了如何通过Jenkins配置后端工程进行自动化部署。关于Jenkins自动化部署,在实际的项目中,一般会涉及到多个节点服务器、服务高可用等等情况,需要对shell脚本进一步做优化处理。