基于 jenkins 的持续集成、持续部署方案

工具介绍

  • python3.12 + fastapi 0.92.0 + uvicorn 开发部署web项目;
  • git + gitee 实现代码版本管理;
  • jenkins + docker 实现持续集成、持续部署;
  • centos7 作为jenkins服务器 & 部署服务器;有条件的可以再启动一台服务器作为部署测试的服务器;

 

项目代码仓库

仓库地址
这里已准备部分web项目代码;后续可以持续开发、持续集成、持续部署;
在这里插入图片描述

编写Dockfile脚本:

# 指定基础镜像
FROM python# 拷贝项目数据   到容器中.../home/ 
RUN mkdir /home/web_app
COPY src/* /home/web_app
COPY tests/* /home/web_app
COPY requirements.txt /home/web_app
COPY setup.py /home/web_app# *****装python依赖*****
# 切换工作目录
WORKDIR /home/web_app
RUN python3 -m pip install -r requirements.txt# 端口映射  同 -p 8083:8083
EXPOSE 8083
# 目录映射  同 -v /home/web_app:/home/web_app
VOLUME /home/web_app# 执行前台命令,防止端口被占用
CMD ["python3", "app.py"]

 

CentOS7 环境准备及构建测试

iso镜像安装
问题解决及软件安装
 

# 安装git 
sudo yum install -y git
# 配置ssh公钥
ssh-keygen -t rsa  # 回车
# 在~/.ssh/id_rsa.pub 复制公钥,并配置在gitee个人仓库# 拉取代码仓库开发分支
git clone -b develop git@gitee.com:laufing/web_app.git# 进入仓库目录
cd web_app
# 执行构建,生成docker image
docker build -t "web_app_image" .
# -t 执行构建镜像的名称
# . 在当前目录下找Dockerfile 脚本  # 构建完成后查看
docker images
# 启动容器
docker run -d -p 8083:8083 -v /root/web_app:/home/web_app --name=web_app web_app_image# 查看容器是否启动
[root@centos web_app]# docker ps
CONTAINER ID   IMAGE           COMMAND            CREATED         STATUS         PORTS                                       NAMES
d975824bfca6   web_app_image   "python3 app.py"   4 minutes ago   Up 4 minutes   0.0.0.0:8083->8083/tcp, :::8083->8083/tcp   web_app

局域网内通过http地址访问:
在这里插入图片描述
linux下的8083端口被占用时,容器会启动失败!!!

# 查看端口
lsof -i:8083  # 或者netstat -ano | grep -iE "8083"
# 杀掉
kill -s SIGTERM pid1 pid2 ...

 

创建 jenkins 项目,配置构建

  • centos中启动jenkins
# 使用java 虚拟机启动 
java -jar jenkins.war --httpPort=8081 --httpListenAddress=0.0.0.0
  • windows下载浏览器中访问http://ip:8081
    在这里插入图片描述
  • 创建项目:New Item
    在这里插入图片描述

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

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

相关文章

学习笔记(一)

前言 一、对象 1、由类建模而成,是消息、数据和行为的组合 2、可以接收和发送消息,并利用消息进行彼此的交互。消息要包含传送给对象接收的信息 3、类的实例化:把类转换为对象的过程叫类的实例化。 4、对象的特性 (1) 对象有状态&#…

RabbitMQ Spring客户端使用

注解声明式队列和交换机 java自带序列化工具类,将java对象序列化为字节数组,用于网络传输。 jdk序列号存在缺陷,(不安全,占用空间大等) 推荐使用JSON的序列化: springboot扫描包使配置生效&…

windows下自启springboot项目(jar+nginx)

1、将springboot项目打包为jar 2、新建文本文档 test.txt,并输入 java -jar D:\test\test.jar(修改为自己的jar包位置) 保存 然后修将后缀名改为 .bat 3、在同一目录再新建 文本文档test.txt,输入以下内容,&…

图数据库的力量:深入理解与应用 Neo4j

图数据库的力量:深入理解与应用 Neo4j 文章目录 图数据库的力量:深入理解与应用 Neo4j1、什么是 Neo4j?版本说明 2、Neo4j 的部署和安装Neo4j Web 工具介绍 3、体验 Neo4j加载数据查询数据数据结构 4、Cypher 入门创建数据查询数据关系深度查…

【数据结构篇】~排序(1)之插入排序

排序~插入排序 前言插入排序1.直接插入排序(时间复杂度:O(N^2))1.思想2.代码 2.希尔排序(时间复杂度:O(N∙))1.思路简易证明希尔排序的复杂度 2.代码 前言 四大排序,今天解决插入排序 堆排序和冒泡排序已经写过了&am…

从安装ffmpeg开始,把一个视频按照每秒30帧fps剪切为图片

ffmpeg -i demo.mp4 -vf fps1 -start_number 0 %5d.jpg没有ffmpeg 的去官网下载, ffmpeg.org/download.html 下载好之后,解压进入bin文件夹 复制当前路径,下一步 配置环境 进入本机环境变量,把地址添加到path中 之后进入anacond…

IO模型---BIO、NIO、IO多路复用、AIO详解

本篇将想给详细解释一下什么是BIO、NIO、IO多路复用以及AIO~ 同步的阻塞(BIO)和非阻塞(NIO)的区别 BIO:线程发来IO请求后,一直阻塞着IO线程,需要缓冲区这边数据准备好之后,才会进行下一步的操作。 举个🌰&#xff1…

Golang协程泄漏定位和排查

Golang协程泄漏定位和排查 1 场景:无缓冲channel写阻塞2 排查和定位思路2.1 Golang pprof2.2 协程数监控2.3 操作系统内存泄漏 参考 1 场景:无缓冲channel写阻塞 package mainimport ("log""net/http"_ "net/http/pprof"…

苍穹外卖 修改nginx的端口后websocket连接失败解决

苍穹外卖 修改nginx的端口后websocket连接失败解决 问题: 后端配置好websocket后前端仍显示如图所示的错误 解决: 先用websocket在线工具测试后端是否能正常连接(这个基本上不会出现问题)用f12观察前端发送的请求 正常来说这个请…

cJSON-轻量级解析模块、字符串的神——编织STM32C8T6与阿里云信息传递的纽带

编写方向:本人就不泛泛的编写一篇什么一文学会cJSON了,没什么突出点,也就我水水字数,你们看来看去也不懂,本人是从上阿里云传信息接触的cJSON的,我就此写一篇针对性的文章,希望对大家有用&#…

【小鹏汽车用户平台-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

图解Self-Attention和代码实现,大语言模型基础思维导图

文章目录 1 Self-Attention的概念注意优缺点 2 Self-Attention的原理Q,K,V, and Self-Attention计算公式代码实现 Self-Attention的计算细节输入是如何Embedding的?Word EmbeddingsSentence EmbeddingsPre-trained Embeddings SelfAttention是如何计算的计算图 4 Se…

线性代数(宋浩版)(4)

2.4逆矩阵 (不要把矩阵放在分母上) 方阵的行列式 性质1 性质2 性质3 伴随矩阵(只有方阵才有) 1.求出所有元素的代数余子式(矩阵先求行列式)。 2.按行求的代数余子式按列放。 定理1(重要&…

java中Class文件的文件格式

无关性的基石 计算机底层只能识别二进制,由CPU直接处理二进制,在底层上面是操作系统,在操作系统上面就是虚拟机,java有一个口号,“一次编写,到处运行”这个不太可能在操作系统层面上实现,不同的…

三重因素,巨人瘦身——从 IBM中国研发部裁员讲起

如何看待IBM中国研发部裁员?近日,IBM中国宣布撤出在华两大研发中心,引发了IT行业对于跨国公司在华研发战略的广泛讨论。这一决定不仅影响了众多IT从业者的职业发展,也让人思考全球化背景下中国IT产业的竞争力和未来发展方向。面对…

【CMake】使用CMake在VIsual Studio内构建多文件夹工程

一、配置准备 打开VIsual Studio,载入写好的 C M a k e l i s t s . t x t CMakelists.txt CMakelists.txt,在项目中添加以下文件: 创建一个文件夹 f u n c s funcs funcs,里面放入 f u n c . h func.h func.h、 f u n c . c p …

使用mlp算法对Digits数据集进行分类

程序功能 这个程序使用多层感知机(MLP)对 Digits 数据集进行分类。程序将数据集分为训练集和测试集,创建并训练一个具有两个隐藏层的 MLP 模型。训练完成后,模型对测试数据进行预测,并通过准确率、分类报告和混淆矩阵…

C语言刷题日记(附详解)(5)

一、选填部分 第一题: 下面代码在64位系统下的输出为( ) void print_array(int arr[]) {int n sizeof(arr) / sizeof(arr[0]);for (int i 0; i < n; i)printf("%d", arr[i]); } int main() {int arr[] { 1,2,3,4,5 };print_array(arr);return 0; } A . 1…

Arcgis实现面空间位置从东至西从南至北排序

效果 背景 工作项目中经常会遇到需要对网格进行编号,而编号是有一定原则的,比如空间位置从上到下从左到右,或者其它原则,那么都可以通过下面的方式来实现 1、准备数据 点shp文件,查看初始FID字段标注,目前是一个无序的状态 2、排序 字段选择空间字段,空间排序方法…

02请求响应(简单参数)

一、操作目的 前端通过post/get请求&#xff0c;传递给后端简单的数据&#xff0c;后端接收后在控制台打印出来&#xff0c;并将结果返回给前端页面展示出来。&#xff08;这里我们用postman来模拟前端页面&#xff0c;而非真实的通过编写前端代码&#xff0c;通过浏览器来展示…