Docker+Jenkins自动化部署SpringBoot项目【详解git,jdk,maven,ssh配置等各种配置,附有示例+代码】

文章目录

  • Docker+Jenkins部署SpringBoot项目
  • 一.准备工作
    • 1.1安装jdk11
    • 1.2安装Maven
  • 二.Docker安装Jenkins
    • 2.1安装Docker
    • 2.2 安装Jenkins
    • 2.3进入jenkins
  • 三.Jenkins设置
    • 3.1安装jenkins插件
    • 3.2全局工具配置
      • 全局配置jdk
      • 全局配置maven
      • 全局配置git
    • 3.3 系统配置
      • 安装 Publish Over SSH 插件
      • 配置 SSH 服务器
      • Gitee 配置
      • 添加 Gitee配置
  • 四.构建项目
    • 4.0 准备工作
    • 4.1构建项目一
      • 4.1.1 新建项目
      • 4.1.2 配置源码管理
      • 4.1.3 构建触发器
    • 4.2 构建项目二

Docker+Jenkins部署SpringBoot项目

在这里插入图片描述

Jenkins 是一个流行的开源自动化服务器,主要用于 持续集成(CI)持续部署(CD),它可以帮助开发团队自动化构建、测试和部署过程,提高软件开发效率。

Jenkins 的作用

持续集成(CI,Continuous Integration)

  • 每次代码提交后自动构建和测试,确保代码的正确性。
  • 及时发现问题,提高团队协作效率。
  • 减少“集成地狱”,即多人开发时的代码合并问题。

持续部署(CD,Continuous Deployment / Delivery)

  • 持续交付(Continuous Delivery):代码经过自动化测试和打包后,能够手动部署到生产环境。
  • 持续部署(Continuous Deployment):在持续交付的基础上,自动化发布到生产环境。

一.准备工作

1.1安装jdk11

安装jdk1.8会出兼容性问题,建议安装jdk11

首先在 /usr/local 下创建java文件夹,将openjdk-11+28_linux-x64_bin.tar压缩包在次文件下解压缩,

在这里插入图片描述

解压缩后查看Java文件夹中的东西,出现jdk-11,解压成功。

在这里插入图片描述

在这里插入图片描述

配置环境变量, 注意路径

vim /etc/profile

在这里插入图片描述

#刷新配置文件
source /etc/profile
#查看版本
java -version

在这里插入图片描述

1.2安装Maven

https://maven.apache.org/docs/history.html

这里安装的是maven3.8.6

使用root用户登录linux

#解压
tar -zxvf apache-maven-3.8.6-bin.tar.gz
#移动到/usr/local
mv apache-maven-3.8.6 /usr/local
#进入/usr/local
cd /usr/local
#重命名为maven
mv apache-maven-3.8.6/ maven
#配置环境变量
vim /etc/profile
{
export MAVEN_HOME=/usr/local/maven
export PATH=$PATH:$MAVEN_HOME/bin
}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

查看maven版本是否安装成功:

在这里插入图片描述

在maven文件夹下创建maven仓库目录

mkdir mavenRepository

编辑配置文件,配置Maven加速镜像地址和本地仓库目录

#创建maven仓库目录
mkdir /usr/local/maven/ck
#编辑配置文件
vim /usr/local/maven/conf/settings.xml
<localRepository>/usr/local/maven/ck</localRepository><mirrors><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror></mirrors>

在这里插入图片描述

二.Docker安装Jenkins

2.1安装Docker

略,请查看《Centos7安装Docker》

2.2 安装Jenkins

#创建jenkins_home数据挂载目录
mkdir /mnt/jenkins_home
#赋值权限,否则后慢慢挂载会失败,这里我们给最高权限
chmod -R 777 /mnt/jenkins_home
#拉取jenkins镜像
docker pull jenkins/jenkins:lts-jdk11#启动jenkins容器
docker run -d --name=jenkins -p 8081:8080 --privileged=true \
-v /mnt/jenkins_home:/var/jenkins_home \
-v /usr/local/java/jdk-11:/usr/local/java/jdk-11 \
-v /usr/local/maven:/usr/local/maven \
-v $(which docker):/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts-jdk11
#授予docker的操作权限给jenkins等容器使用
chmod a+rw /var/run/docker.sock
参数说明:
-v /mnt/jenkins_home:/var/jenkins_home:是对容器内存储Jenkins的一些配置信息的文件夹
-v /usr/local/java/jdk-11:/usr/local/java/jdk-11:是把linux下的jdk和容器内的关联(配置Jenkins时使用)
-v /usr/local/maven:/usr/local/maven:是把linux下的maven和容器内的关联(配置Jenkins时使用)
-v $(which docker):/usr/bin/docker:是把linux下的docker和容器内的关联
-v /var/run/docker.sock:/var/run/docker.sock:是可以在Jenkins容器里使用我们Linux下的docker。

在这里插入图片描述

如果出现上图错误,尝试docker rm -f $(docker ps -a -q)

在这里插入图片描述

然后在执行上述的启动jenkins命令。

2.3进入jenkins

启动:service jenkins start
重启:service jenkins restart
停止:service jenkins stop

在这里插入图片描述

获取初始密码

#查看容器id
docker ps
#查看jenkins容器日志
docker logs (jenkins容器id)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6ea9894b9ab1408fb8f85ef7487e3678

三.Jenkins设置

3.1安装jenkins插件

此处本人先按照的csdn上的文档进行的<安装推荐的插件>方式,但是选择这个方式安装插件后续会出错,已经亲身尝试过三次,均出错。所以在后面选择了《选择插件来安装》的方式来安装插件。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

进入Jenkins管理后台
在这里插入图片描述

在这里插入图片描述

依次搜索安装 Maven Integration 和 Publish Over SSH 以及 Gitee 三个插件安装即可

在Jenkins启动成功后,安装以下三个插件能够增强其功能,满足特定的项目需求:

  1. Gitee
    功能:Gitee插件允许Jenkins与Gitee代码仓库集成,支持从Gitee仓库中拉取代码、触发构建任务。这对于使用Gitee进行源代码管理的团队非常有用,能简化CI/CD流程。
    安装:在“插件管理”界面,搜索“Gitee”插件并安装。安装后,可以在Jenkins的项目配置中添加Gitee仓库的访问信息,配置Webhook以便代码提交时自动触发构建。
  2. Maven Integration
    功能:Maven Integration插件允许Jenkins与Maven无缝集成,使得Jenkins可以直接调用Maven进行项目的构建、测试和打包。这对于Java项目尤其重要,因为Maven能够自动管理项目依赖、编译代码,并生成可部署的包(如JAR、WAR)。
    安装:在Jenkins管理界面中,导航到“插件管理” -> “可选插件”,搜索“Maven Integration”并点击“安装”。
  3. Publish Over SSH
    功能:Publish Over SSH插件允许Jenkins通过SSH将构建生成的文件(如JAR、WAR包)安全地传输到远程服务器上。这对于部署过程至关重要,尤其是当需要将构建产物自动部署到生产或测试服务器时。
    安装:同样在“插件管理”界面,搜索“Publish Over SSH”并安装。安装后,你可以在“系统管理”中配置SSH服务器的连接信息。
    通过安装这些插件,Jenkins能够更好地支持项目构建、打包、部署和代码管理,大大提高自动化部署的效率和灵活性。

在这里插入图片描述

3.2全局工具配置

全局配置jdk 、maven、git

全局配置jdk

  • 为什么需要:Jenkins本身是基于Java的应用,并且许多构建工具(如Maven、Gradle)也依赖JDK。因此,配置JDK是必不可少的。
  • 配置方法:在Jenkins的“系统管理” -> “全局工具配置”中,找到JDK配置部分,点击“添加JDK”,指定JDK的安装路径,或者选择自动安装。

在这里插入图片描述

全局配置maven

  • 为什么需要:Maven是Java项目构建的标准工具,用于依赖管理、代码编译、测试和打包。通过配置Maven,Jenkins可以调用Maven进行项目构建。
  • 配置方法:在“全局工具配置”中找到Maven配置部分,点击“添加Maven”,指定Maven的安装路径,或者选择自动安装。

在这里插入图片描述

在这里插入图片描述

全局配置git

  • 为什么需要:大多数项目都使用Git进行源代码管理。通过配置Git,Jenkins可以从Git仓库中拉取代码并进行构建。
  • 配置方法:在“全局工具配置”中找到Git配置部分,添加Git安装路径,或者选择自动安装。确保Jenkins可以访问正确版本的Git(由于 Jenkins 容器中已经存在 git 了,所以这里不需要额外安装 git,默认即可)。

在这里插入图片描述

3.3 系统配置

安装 Publish Over SSH 插件

在3.1中已经安装过,跳过即可

配置 SSH 服务器

插件安装完成后,返回“系统管理”页面,选择“系统配置”或“Configure System”。

向下滚动页面,找到 Publish Over SSH 部分。

点击“添加”按钮,配置一个新的SSH服务器:

  • Name: 为服务器配置一个易记的名称。
  • Hostname: 输入目标服务器的IP地址或主机名。
  • Username: 输入用于登录到目标服务器的用户名。
  • Remote Directory: 指定在远程服务器上的默认目录,Jenkins将把构建产物传输到此目录。

点击“测试配置”或“Test Configuration”按钮,验证Jenkins是否能够成功连接到目标服务器。

在这里插入图片描述

在这里插入图片描述

保存配置,配置完成后,点击页面底部的“保存”或“应用”按钮,以确保你的设置被保存。

Gitee 配置

通过配置Gitee,Jenkins能够与Gitee代码仓库集成,实现代码的自动拉取和构建。

  • 同样在Jenkins的插件管理中,搜索Gitee并安装该插件(安装过可以忽略此步骤。)

  • 获取 Gitee API Token

    登录到Gitee账户,

    在设置里面找到“私人令牌”部分,点击“生成新的令牌”。

    根据需要选择令牌的权限,例如“repo”(代码仓库相关操作)和“user_info”(用户信息查看)。

    生成令牌后,复制并保存。

    在这里插入图片描述

    在这里插入图片描述

    007cfbfae48459bf61866aa9cf973d93

    007cfbfae48459bf61866aa9cf973d93

添加 Gitee配置

  • 在“系统配置”页面,找到Gitee 配置。
  • 配置你的Gitee仓库信息:
    • 链接名: 输入你的Gitee仓库的URL(HTTPS),即 就是你自己创建的gitee仓库地址。
    • Gitee域名URL: 输入Gitee域名完整URL地址。
    • 证书令牌: 选择Gitee API令牌。

在这里插入图片描述
在这里插入图片描述

通过上述步骤,就已经在Jenkins中完成了 Publish Over SSHGitee 的配置。这些配置使得Jenkins能够安全地将构建产物部署到远程服务器,同时自动拉取和构建Gitee上的代码,为CI/CD流程提供了基础支持。

最后重启jenkins,如图:

在这里插入图片描述

在这里插入图片描述

四.构建项目

4.0 准备工作

首先在idea创建一个测试的工程项目:demo,

然后手动创建Dockerfile文件:如图

在这里插入图片描述

#使用OpenJDK 11 JRE精简版作为基础镜像。
FROM openjdk:11-jre-slim#设置环境变量PARAMS为空字符串
ENV PARAMS=""#将当前目录下的所有JAR文件添加到镜像中的/demo.jar。
ADD *.jar /demo.jar#设置容器启动时执行的命令为使用java -jar运行/demo.jar,并传递环境变量PARAMS。
ENTRYPOINT ["sh","-c","java -jar /demo.jar $PARAMS"]

在这里插入图片描述

修改pom文件,为了打包顺利

在这里插入图片描述

如果不将<skip>xxxx</skip>注释掉再加个打包后缀名,当执行打好的jar包时会出错,如图:

在这里插入图片描述

然后,进行打包

在这里插入图片描述

在这里插入图片描述

4.1构建项目一

在Jenkins中新建一个Maven项目的步骤如下:

4.1.1 新建项目

  • 在Jenkins首页,点击左侧菜单中的“新建任务”或“New Item”。
  • 在弹出的窗口中,为项目输入一个名称,然后选择“构建一个Maven项目”或“Maven Project”。
  • 点击“确定”进入项目配置页面。

在这里插入图片描述

在这里插入图片描述

4.1.2 配置源码管理

  • 在项目配置页面,找到“源码管理”部分。
  • 选择你使用的版本控制系统(如Git),并输入项目的代码仓库URL。
  • 如果仓库需要认证,配置相应的凭证(Credentials),如用户名和密码或SSH密钥。
  • 设置仓库中触发构建的分支代码(*/release表示release分支有代码提交则自动触发构建)。

在这里插入图片描述

4.1.3 构建触发器

  • 配置构建触发器,这可以是轮询SCM(Poll SCM)、Webhook触发、定时构建等。
  • 例如,如果你希望在每次代码提交时触发构建,可以选择“GitHub hook trigger for GITScm polling”或“Poll SCM”,并设置合适的时间间隔。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

#!/bin/bash
# 服务名称
SERVER_NAME=demo
# 源jar名称,mvn打包之后,target目录下的jar包名称
JAR_NAME=demo-1.0.0-SNAPSHOT
# jenkins下的目录
JENKINS_HOME=/mnt/jenkins_home/workspace/demo
# 等待三秒
echo sleep 3s
sleep 1
echo sleep 2s
sleep 1
echo sleep 1s
sleep 1
echo "结束进程完成"
cd $JENKINS_HOME/target
cp $JENKINS_HOME/Dockerfile $JENKINS_HOME/target
# 修改文件权限
chmod 755 $JAR_NAME.jar
echo "看看docker能不能用"
docker -v
echo "停止容器"
# 停止容器
docker stop demo
echo "删除容器"
# 删除容器
docker rm demo
echo "删除镜像"
# 删除镜像
docker rmi demo
echo "打包镜像"
# 打包镜像
docker build -t demo 
echo "运行镜像"
# 运行镜像
docker run -d -p 9999:9999 --name demo demo

此时点击立即构建,会失败。

在这里插入图片描述

点开之后可以看见构建信息:

在这里插入图片描述
在这里插入图片描述

4.2 构建项目二

项目一失败了,再继续再创建新的项目,步骤和一类似

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

将以下内容复制在deploy.sh文件中

在这里插入图片描述

export JAVA_HOME=/opt/java
export PATH=$JAVA_HOME/bin:$PATHJAR_PATH=/root/dataJARFILE=demo-0.0.1-SNAPSHOT-kwh.jarps -ef | grep $JARFILE | grep -v grep | awk '{print $2}' | xargs kill -9java -jar $JAR_PATH/$JARFILE > out.log &
if [ $? = 0];thensleep 30tail -n 50 out.log
fils -lt|awk 'NR>${print $NF}'|xargs rm -rf

在这里插入图片描述

最后保存。

在这里插入图片描述

在这里插入图片描述

点开可以查看构建信息。

在这里插入图片描述

工作空间 可以看到构建之后的项目结构

在这里插入图片描述

此时这个项目构建成功。

如何运行构建的项目呢?查看构建信息

在这里插入图片描述

然后进入这个文件夹下

在这里插入图片描述

运行demo-0.0.1-SNAPSHOT-kwh.jar,此时idea是没有任何运行程序的。

在这里插入图片描述

然后测试:

在这里插入图片描述

此时jenkins自动化部署项目已经实现。

可能有人会问自动二字体现在何处?莫急莫急,

此时假如你在idea中修改了代码,提交推送到远程仓库,此时由于已经配置jenkins自动化部署,当你将代码推送到远程后,在jenkines中会自动触发构建项目的过程,你只需刷新浏览器即可,就能看到修改的内容,如图:

在这里插入图片描述
推送到远程仓库:

在这里插入图片描述

在这里插入图片描述

推送到远程成功,会立即触发jenkins自动构建项目

在这里插入图片描述

在这里插入图片描述

此时刷新浏览器即可看到更新内容:(注:由于这里本人没有配置好webhooks自动触发器设置,在这里先手动模拟Jenkins自动构建)

根据上述构建信息找到jar包位置

在这里插入图片描述

手动运行jar包

在这里插入图片描述

刷新浏览器:构建成功。

在这里插入图片描述

学习参考文档:https://blog.csdn.net/qq_51447436/article/details/141194535https://blog.csdn.net/weixin_43755251/article/details/127566967阿里云社区
https://developer.aliyun.com/article/1288762

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知识图谱数据库 Neo4j in Docker笔记

下载 docker pull neo4j:community官方说明 https://neo4j.com/docs/operations-manual/2025.01/docker/introduction/ 启动 docker run \--restart always \--publish7474:7474 --publish7687:7687 \--env NEO4J_AUTHneo4j/your_password \--volumeD:\files\knowledgegrap…

前缀和算法篇:解决子数组累加和问题

1.前缀和原理 那么在介绍前缀和的原理之前&#xff0c;那么我们先来说下前缀和最基本的一个应用场景&#xff0c;那么就是如我们标题所说的子数组累加和问题&#xff0c;那么假设我们现在有一个区间为[L,R]的数组&#xff0c;那么我们要求的其中子数组比如[L,i]或者[i,m] (L&l…

Notepad++ 中删除所有以 “pdf“ 结尾的行

Notepad 中删除所有以 “pdf” 结尾的行 操作步骤 1.打开文件&#xff1a; 在 Notepad 中打开你需要处理的文本文件。 2.打开查找和替换对话框&#xff1a; 按快捷键 Ctrl F&#xff0c;打开“查找和替换”对话框。 3.启用正则表达式模式&#xff1a; 在对话框的底部&#xf…

知识管理成功:关键指标和策略,研究信息的投资回报率

信息过载会影响生产力。没有人工智能的帮助&#xff0c;信息过载会影响生产力。大量的可用信息&#xff0c;知识工作者不仅仅是超负荷工作&#xff1b;他们感到不知所措&#xff0c;他们倾向于浪费时间&#xff08;和脑细胞&#xff09;来应付他们被大量的数据抛向他们&#xf…

Golang 进阶训练营

一、Golang 的 slice、map、channel 1.1 slice vs array a : make([]int, 100) //切片 b : [100]int{} //数组array需指明长度&#xff0c;长度为常量且不可改变 array长度为其类型中的组成部分&#xff08;给参数为长度100的数组的方法传长度为101的会报错&#xff09; array在…

Oracle临时表空间(基础操作)

临时表空间 临时表空间&#xff1a;用来存放用户的临时数据&#xff0c;临时数据在需要时被覆盖&#xff0c;关闭数据库后自动删除&#xff0c;其中不能存放永久性数据。 用户进程和服务器进程是一对一的叫做专用连接。 任何一个用户连到oracle数据库&#xff0c;oracle都会…

AI时代的前端开发:对抗压力的利器

在飞速发展的AI时代&#xff0c;前端开发工程师们面临着前所未有的挑战。项目周期不断缩短&#xff0c;需求变化日新月异&#xff0c;交付压力更是与日俱增&#xff0c;这使得开发人员承受着巨大的压力。如何提升对抗压能力&#xff0c;成为摆在每一位前端工程师面前的重要课题…

如何使用DHTMLX Scheduler的拖放功能,在 JS 日程安排日历中创建一组相同的事件

DHTMLX Scheduler 是一个全面的调度解决方案&#xff0c;涵盖了与规划事件相关的广泛需求。假设您在我们的 Scheduler 文档中找不到任何功能&#xff0c;并且希望在我们的 Scheduler 文档中看到您的项目。在这种情况下&#xff0c;很可能可以使用自定义解决方案来实现此类功能。…

计算机网络-八股-学习摘要

一&#xff1a;HTTP的基本概念 全称&#xff1a; 超文本传输协议 从三个方面介绍HTTP协议 1&#xff0c;超文本&#xff1a;我们先来理解「文本」&#xff0c;在互联网早期的时候只是简单的字符文字&#xff0c;但现在「文本」的涵义已经可以扩展为图片、视频、压缩包等&am…

【pytorch】weight_norm和spectral_norm

apply_parametrization_norm 和spectral_norm是 PyTorch 中用于对模型参数进行规范化的方法&#xff0c;但它们在实现和使用上有显著的区别。以下是它们的主要区别和对比&#xff1a; 实现方式 weight_norm&#xff1a; weight_norm 是一种参数重参数化技术&#xff0c;将权…

回归预测 | Matlab实现PSO-HKELM粒子群算法优化混合核极限学习机多变量回归预测

回归预测 | Matlab实现PSO-HKELM粒子群算法优化混合核极限学习机多变量回归预测 目录 回归预测 | Matlab实现PSO-HKELM粒子群算法优化混合核极限学习机多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.回归预测 | Matlab实现PSO-HKELM粒子群算法优化混合核…

多媒体软件安全与授权新范例,用 CodeMeter 实现安全、高效的软件许可管理

背景概述 Reason Studios 成立于 1994 年&#xff0c;总部位于瑞典斯德哥尔摩&#xff0c;是全球领先的音乐制作软件开发商。凭借创新的软件产品和行业标准技术&#xff0c;如 ReWire 和 REX 文件格式&#xff0c;Reason Studios 为全球专业音乐人和业余爱好者提供了一系列高质…

C++,STL容器适配器,stack:栈深入解析

文章目录 一、容器概览与核心特性核心特性速览二、底层实现原理1. 容器适配器设计2. 默认容器对比三、核心操作详解1. 容器初始化2. 元素操作接口3. 自定义栈实现四、实战应用场景1. 括号匹配校验2. 浏览器历史记录管理五、性能优化策略1. 底层容器选择基准2. 内存预分配技巧六…

互联网大厂中面试的高频计算机网络问题及详解

前言 哈喽各位小伙伴们,本期小梁给大家带来了互联网大厂中计算机网络部分的高频面试题,本文会以通俗易懂的语言以及图解形式描述,希望能给大家的面试带来一点帮助,祝大家offer拿到手软!!! 话不多说,我们立刻进入本期正题! 一、计算机网络基础部分 1 …

「软件设计模式」工厂方法模式 vs 抽象工厂模式

前言 在软件工程领域&#xff0c;设计模式是解决常见问题的经典方案。本文将深入探讨两种创建型模式&#xff1a;工厂方法模式和抽象工厂模式&#xff0c;通过理论解析与实战代码示例&#xff0c;帮助开发者掌握这两种模式的精髓。 一、工厂方法模式&#xff08;Factory Metho…

Docker部署Alist网盘聚合管理工具完整教程

Docker部署Alist网盘聚合管理工具完整教程 部署alist初始化修改密码添加存储&#xff01;联通网盘阿里云盘百度网盘 部署alist 本文以Linux Docker部署&#xff0c;假设你已经安装好Docker docker run -d --restartalways \-v /your/data:/opt/alist/data \-p 5244:5244 \-e …

Excel常用操作

Excel常用操作 学习资源 37_电子表格处理考点精讲_设置数据格式_哔哩哔哩_bilibili 快速输入数据与编辑数据 一个工作簿可以包含多个工作表 特殊数据的添加格式 输入负数, 例如-3、-5 常规输入, 直接输入-3、-5;使用(), 例如在单元格中输入(3)回车即可变为-3;上述括号不区分中…

SpringMVC环境搭建

文章目录 1.模块创建1.创建一个webapp的maven项目2.目录结构 2.代码1.HomeController.java2.home.jsp3.applicationContext.xml Spring配置文件4.spring-mvc.xml SpringMVC配置文件5.web.xml 配置中央控制器以及Spring和SpringMVC配置文件的路径6.index.jsp 3.配置Tomcat1.配置…

常见的排序算法:插入排序、选择排序、冒泡排序、快速排序

1、插入排序 步骤&#xff1a; 1.从第一个元素开始&#xff0c;该元素可以认为已经被排序 2.取下一个元素tem&#xff0c;从已排序的元素序列从后往前扫描 3.如果该元素大于tem&#xff0c;则将该元素移到下一位 4.重复步骤3&#xff0c;直到找到已排序元素中小于等于tem的元素…

Golang的容器化部署流程

# Golang的容器化部署流程 什么是容器化部署 容器化部署是将应用程序、运行环境及其依赖项打包在一起&#xff0c;以便可以在任何环境中快速、一致地运行的技术。它提供了更高效的资源利用、更便捷的部署和更稳定的环境。 的容器化支持 天生支持跨平台编译&#xff0c;使得将Go…