【服务器部署篇】Jenkins配置后端工程自动化部署

作者介绍:本人笔名姑苏老陈,从事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脚本进一步做优化处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/576815.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【亲测对比】大厂云服务器2-64G对比表 不卡顿 幻兽帕鲁 我的世界 雾锁王国 饥荒联机版 英灵神殿通用

更新日期:4月26日(京东云采购季持续进行) 本文纯原创,侵权必究 《最新对比表》已更新在文章头部—腾讯云文档,文章具有时效性,请以腾讯文档为准! 【腾讯文档实时更新】2024年-幻兽帕鲁服务器专…

C语言系列文章 | 初识C语言

首先分为几个方面来和各位读者介绍C语言,并在之后的学习过程中不断地和各位读者去分享我学习的经历。 坐好,发车咯~目录如下:1. C语言是什么?2. C语言的历史和辉煌3. 编译器的选择VS20224. VS项目和源⽂件、头⽂件介绍5. 第⼀…

关于java对接微信公众号(对接百度AI实现图片文字识别,对接聚合数据实现笑话、谜语大全,成语接龙等功能)

前言: 只是自己学习使用,所以有点不规范,请见谅 本文直接附上源码与效果图,具体操作步骤请参考另一篇文章:http://t.csdnimg.cn/PQu25 1.运行效果图 1.1 关注事件 1.2 笑话大全 1.3 谜语大全 1.3 多级菜单 1.4 按钮…

MySQL基础知识——MySQL索引

深入浅出索引 索引的意义 索引的意义:在大量数据中,加速访问少量特定数据; 使用索引的前提条件: 1)索引块数量小于数据块数量; 2)索引键有序,故可以使用二分查找等高效的查找方式&…

互联网安全面临的全新挑战

前言 当前移动互联网安全形势严峻,移动智能终端漏洞居高不下、修复缓慢,移动互联网恶意程序持续增长,同时影响个人和企业安全。与此同时,根据政策形势移动互联网安全监管重心从事前向事中事后转移,需加强网络安全态势感…

ETF期权是什么详解

ETF期权是什么 ETF期权的本质是一种金融衍生品,与交易所交易基金(Exchange-Traded Fund,简称ETF)相关的期权合约。其核心在于赋予了投资者在未来某个时间点以约定价格买入或卖出特定ETF(交易所交易基金)的…

百望云发布金盾企业经营大模型,暨光明食品、法雷奥、西奥电梯财税数字化实践分享

百望云发布金盾企业经营大模型,暨光明食品、法雷奥、西奥电梯财税数字化实践分享 数字化转型思想指导下,如何标定好、利用好、管理好数据资产,已经成为企业寻找发展新动能的着力点。 基于此,“2024数字商业创新论坛”于4月26号在上…

2017美亚杯--个人赛

1、Gary的笔记本电脑已成功取证并制作成镜像 (Forensic Image),下列哪个是其MD5哈希值。A.0CFB3A0BB016165F1BDEB87EE9F710C9 B.5F1BDEB87EE9F710C90CFB3A0BB01616 C.A0BB016160CFB3A0BB0161661670CFB3 D.16160CFB3A0BB016166A0BB016166167 E.FB3A0BB016165 B016166…

【论文阅读】Self-DC:何时检索,何时生成?

对于RAG来说,什么时候利用外部检索,什么时候使用大模型产生已知的知识,以回答当前的问题?这是一个非常有趣的话题。 《Self-DC: When to retrieve and When to generate? Self Divide-and-Conquer for Compositional Unknown Questions》这…

环境配置——Windows平台配置VScode运行环境为远程服务器或虚拟机

1. 远程机需要先安装SSH服务,命令如下 sudo apt install openssh-server 2. 安装好后需要开启SSH服务: sudo service sshd start 3. 查看SSH服务是否有被开启: sudo systemctl status sshd.service 4. 本地Windows需要生成密钥将公钥放…

Windows 安全中心:页面不可用 你的 IT 管理员已限制对此应用的某些区域的访问,并且你尝试访问的项目不可用。有关详细信息,请与 IT 支持人员联系。

问题 1:Windows 安全中心提示:【页面不可用 你的 IT 管理员已限制对此应用的某些区域的访问,并且你尝试访问的项目不可用。有关详细信息,请与 IT 支持人员联系。】 修复 Microsoft.SecHealthUI 方法 1:命令自动重装安…

IDM下载器_Internet Download Manager 6.42.7

网盘下载 IDM下载器是一款针对互联网所打造的下载管理器。IDM下载器能将下载速度提高5倍,恢复因丢失的连接,网络问题,计算机关闭或意外断电而重新启动中断或中断的下载。IDM下载器还可支持所有流行的浏览器,以使用独特的“高级浏…

mysql8.0免安装版windows

1.下载 MySQL下载链接 2.解压与新建my.ini文件 解压的路径最好不要有中文路径在\mysql-8.0.36-winx64文件夹下新建my.ini文件,不建data文件夹(会自动生成) [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录(尽量用双斜杠\\,单斜杠\可能会报错) basedirD:\…

Linux系统----信号(万字文章超级详细并且简单易学附有实操shell指令图及注释!)

绪论​ “Do one thing at a time, and do well.”,本章开始Linux系统其中信号是学习操作系统的基本下面将会讲到什么是信号、信号的多种产生方式、信号如何保存的、信号如何处理的、以及一些信号的细节。话不多说安全带系好,发车啦(建议电脑…

qmt教程2----订阅单股行情,提供源代码

链接 qmt教程2----订阅单股行情,提供源代码 (qq.com) qmt教程1---qmt安装,提供下载链接 今天我重新封装了全部qmt的内容,包括数据,交易 qmt交易 我本来打算全部上次git的,但是考虑到毕竟是实盘的内容,就放…

w64devkit 下载,不需要下载MinGW了

w64devkit一个很方便的工具,不需要下载MinGW了 介绍 这里后面我为大家准备了 3 种下载方式,总有一个适合你,嘿嘿!! 在 linux 上大家常用的编译工具就是 gcc,这些工具 windows 上也是有的,常用…

平衡小车的控制算法--结合自动控制原理学习

单纯的去看自控原理,很多概念有点抽象,最好找些应用去理解相关的概念,就找了实验室的一个平衡小车作为应用,不过主要根据小车去跑matlab去验证一些控制算法。结合台湾国立交通大学林沛群的自控线上课的总结 一、自控原理重要概念 …

从零入门区块链和比特币(第二期)

欢迎来到我的区块链与比特币入门指南!如果你对区块链和比特币感兴趣,但不知道从何开始,那么你来对地方了。本博客将为你提供一个简明扼要的介绍,帮助你了解这个领域的基础知识,并引导你进一步探索这个激动人心的领域。…

Java Web 网页设计(3)

3.servlet JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)-CSDN博客 servlet java不支持 只有Tomcat支持 使用时添加一下 servlet中最常用的两个(固定)方法: 下面我们创建一个servlet类 package com.oracle…

[极客大挑战 2019]Upload、[ACTF2020 新生赛]Upload、[MRCTF2020]你传你呢

[极客大挑战 2019]Upload 打开环境&#xff0c;是上传一句话木马的题 先上传1.php试试&#xff0c;发现不可以 试试改后缀为phtml&#xff0c;提示语句中不能包含<?&#xff0c;只能改木马&#xff1a; <script language"php">eval($_POST[line]);</sc…
最新文章