Jenkins+Gogs自动远程Docker环境部署django项目

news2024/11/25 11:58:46

1.Jenkins安装或确认必要插件

jenkins安装或确认必要插件gitlab、Publish Over SSH。
Dashboard--Manage Jenkins--Plugin Manager

2.Publish Over SSH配置

jenkins配置SSH连接django服务部署的对象服务器
Dashboard--Manage Jenkins--Configure System,找到 Publish over SSH中SSH Server。输入目标服务器IP、登录用户、登录用户密码等,最后Test Configuration

3.Jenkins中创建Job

Dashboard--New Item--输入Item name--选择「构建一个多配置项目」--点击OK

配置Job
Source Code Management :Configure--General--Source Code Management--Git--输入Repository URL--选择登录gogs的用户Credentials--选择Branch----Save;

      Build Triggers:选择Trigger builds remotely--Authentication Token;选择Build when a change is pushed to Gogs

      Configuration Matrix:选择Agents--Label--Individual nodes--built-in.

      Build Environment :选择Send files or execute commands over SSH before the build starts--设置SSH Server、Transfers

 

注意docker build image可能耗时较长,默认该过程限时120S,需要Advanced选项中延长timeout时间。

注意Transfers Set Source files、Remote directory、Exec command,其中Exec Command中项目执行sh脚本参考如下:

# 由于向Docker容器中拷贝文件会影响递归结构,所以需要将项目目录先压缩
cd /root/
tar -czvf local_cmdb.tar.gz local_cmdb
echo `pwd`
docker rm -f  local_cmdb
cd /root/local_cmdb
mv -f /root/local_cmdb.tar.gz ./
# 创建Docker容器镜像
docker build -t local_cmdb:v1 -f Dockerfile .
#启动Django项目
docker run -it -d --name local_cmdb -p 80:80 local_cmdb:v1

4.gogs配置web钩子

选择我的仓库--仓库设置--管理Web钩子--添加Web钩子--选择Gogs--填写推送地址、选择数据格式、密钥文本可免、设置希望触发Web钩子的事件、选择激活--点击添加Web钩子。

 

5.测试

开发环境提交代码

下载项目源码

# git clone http://172.26.37.127:3000/luorf/CMDB3.git
# cd CMDB3

编写制作Django项目镜像Dockerfile文件

# vi Dockerfile
FROM almalinux       #选择almalinux为基础镜像

MAINTAINER luorf     #作者

RUN yum install -y python39 gcc python39-devel mysql-devel && yum clean all && rm -rf /var/cache/yum/*     #yum安装python等

RUN ln -sf /usr/bin/python3.9 /usr/bin/python && ln -sf /usr/bin/pip3.9 /usr/bin/pip                  #配置python环境

ADD local_cmdb.tar.gz /root/          #提交项目包

RUN pip install uwsgi -i https://pypi.tuna.tsinghua.edu.cn/simple             #安装uwsgi

RUN pip install -r /root/local_cmdb/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple      #安装项目需要的python组件

EXPOSE 80                #暴露80端口

ENTRYPOINT python /root/local_cmdb/manage.py runserver 0.0.0.0:80      #启动项目

提交修改

# git add .
# git commit -m "django"
# git push origin master

gogs自动推送确认:

 

jenkins脚本执行确认:

 

远程Docker服务器镜像制作成功,容器启动正常,django web访问及利用正常

# docker image ls |grep local_cmdb
local_cmdb                              v1        e8ed8e500b50   25 minutes ago   568MB

# docker ps |grep local_cmdb
8ccc5bc58bbc   local_cmdb:v1                     "/bin/sh -c 'python 鈥   26 minutes ago   Up 26 minutes         0.0.0.0:80->80/tcp, :::80->80/tcp   local_cmdb

# curl -I http://172.26.37.126/admin

此仅仅是实现Django项目的测试发布,完整的发布,需要nginx+uwsgi+django实现,待续。

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

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

相关文章

LIS和LIMS有什么区别?

术语“实验室信息系统”(LIS)和“实验室信息管理系统”(LIMS)经常会引起混淆,并且倾向于互换使用这些术语。通常,术语“ LIS”是指用于管理医院或医疗环境中的临床诊断测试的系统。另一方面,LIM…

基于C#的串口扫描枪通信实战

今天搞大事,观众们动起来,搞事的目的是 掌握串口通信及winform开发技术 硬件设备:1、串口激光扫描枪,注意是串口,不是USB口 2、USB转串口的连接线一根,如图连接所示 3、USB扩展器一个,如果你电…

图片优化: CssSprites与Base64编码

文章目录 1 css sprites1.1 CSS Sprites是什么1.2 为什么需要css sprites1.3 优势1.4 使用原理 2 图片Base64编码 1 css sprites 1.1 CSS Sprites是什么 CSS Sprites是一种网页图片应用处理方式。 又被解释为: CSS精灵CSS图像拼合CSS贴图定位CSS图片精灵CSS雪碧图…

快六一啦,学习CSS3实现一个冰淇淋动画特效

快六一啦,小时候顶多吃个小冰棍,或者是那种小冰袋,现在的小朋友真是好,动不动就能吃到冰淇淋,今天用CSS3实现一个冰淇淋的动画特效吧 目录 实现思路 桶身的实现 冰淇淋身体的实现 五彩颗粒的实现 HTML源码 CSS3源…

17 张程序员专属壁纸推荐

1、三思后再写代码!!! 2、从世界上搜索喜欢你的人!!! 3、代码没写完,哪里有脸睡觉!!! 4、程序员的 Home 键!!! 5、编程是…

【完整项目开发】Springboot+vue教学材料管理系统定制开发

Springbootvue 的专业建建设材料管理系统。 **大家好,今天分享最近做的一套系统。**起因源于小伙伴的需求 文末有的获取方式,如需定制系统,需求发来,我为你分忧,搞起 一、 项目介绍 基于各个专业,对教…

代码随想录算法训练营day56 | 583. 两个字符串的删除操作,72. 编辑距离,编辑距离总结篇

代码随想录算法训练营day56 | 583. 两个字符串的删除操作,72. 编辑距离,编辑距离总结篇 583. 两个字符串的删除操作解法一:动态规划解法二:计算最长公共子序列,然后用数组长度减掉子序列长度 72. 编辑距离解法一&#…

界面组件DevExpress ASP.NET Core v22.2 - UI组件升级

DevExpress ASP.NET Core Controls使用强大的混合方法,结合现代企业Web开发工具所期望的所有功能。该套件通过ASP.NET Razor标记和服务器端ASP.NET Core Web API的生产力和简便性,提供客户端JavaScript的性能和灵活性。ThemeBuilder工具和集成的Material…

【操作系统】01.操作系统概论

操作系统的发展历史 未配置操作系统 手工操作阶段 用户独占全机,人机速度矛盾导致系统资源利用率低 脱机输入输出方式 为了缓解主机cpu和IO设备之间速度不匹配的矛盾,出现了脱机IO技术 在外围机的控制下,通过输入设备,将数据输…

Spring事务和事务的传播机制

一、为什么需要事务 1.1事务定义 将一组操作封装成一个执行单元,要么全部成功要么全部失败。 1.2为什么要用事物 例如转账分为两个操作: 第⼀步操作:A 账户 -100 元。第⼆步操作:B 账户 100 元。 如果没有事务,第…

脱岗监测预警系统 yolov5

脱岗监测预警系统可以通过pythonyolov5网络模型深度学习算法,脱岗监测预警算法对现场人员岗位进行实时监测,自动识别是否存在脱岗行为,并及时发出警报。Yolo意思是You Only Look Once,它并没有真正的去掉候选区域,而是…

2023安卓逆向 -- 抓包环境设置(Charles+Postern)

一、下载Charles并设置代理 1、下载地址,一路下一步即可安装 https://www.charlesproxy.com/ 2、代理设置,抓取所有ip及所有端口的数据包,点击Proxy,选择SSL Proxying Settings 3、点击Add,Host和Port都填写*&#x…

chatgpt赋能python:Python中的升序降序sort解析

Python中的升序降序sort解析 在 Python 开发中,sort 方法是非常常用的方法,它可以对包含数字或字符串的列表进行排序,其中有两种排序方式,分别是升序和降序。本篇文章将会深入探讨 Python 中的 sort 方法,着重介绍升序…

【回顾经典AI神作】卷积神经网络CNN架构系列:LeNet,AlexNet,VGG,GoogLeNet,ResNet

卷积神经网络(CNN或ConvNet)是一种特殊的多层神经网络,旨在以最少的预处理直接从像素图像中识别视觉模式。ImageNet项目是一个大型视觉数据库,设计用于视觉对象识别软件研究。ImageNet 项目举办年度软件竞赛,即 ImageNet 大规模视觉识别挑战赛 (ILSVRC),软件程序竞相正…

企业客户管理难题都有哪些?CRM系统如何解决?

CRM系统在客户管理中的重要性不言而喻,它可以帮助企业提高销售效率,优化客户体验和忠诚度,增加市场份额和利润。那么,CRM客户管理系统如何解决大客户管理难题? 企业大客户管理难题都有哪些: 1、需求十分多变 大客户…

第二节 Python分支结构

文章目录 一,分支结构1.1 概述1.2 语法格式1.2.1 单分支语法结构1.2.2 多分支语法结构1.2.3 多重语法结构1.2.4 分支语句的嵌套结构 1.3 Debug调试1.4 三元运算符1.4.1 求两个数的差值 二 专项练习题2.1 计算快递包裹重量2.2 判断奇偶数2.3 判断闰年2.4 最大的数2.5…

Win11怎么远程控制另外一台电脑?

​Win11是微软推出的一款Windows操作系统,它改善了视觉效果,并具有许多创新功能,例如集成的Android应用程序,用于游戏的Xbox技术等。如今,许多用户已从Win10或Win7升级到Win11。但是很多用户不知道Win11怎么远程控制另…

ArcGis系列-java发布空间表为要素服务(feature)

1,实现思路 使用java调用cmd命令执行python脚本python环境使用arcgis pro安装目录下的 \ArcGIS\Pro\bin\Python\envs\arcgispro-py3发布数据库表前需要先用创建数据库的sde文件(创建sde文件不需要连接arcgis)发布表时,先在本地的空项目模板中添加数据库…

界面组件Telerik UI for WPF可轻松实现直方图,让数据可视化更简单

Telerik UI for WPF拥有超过100个控件来创建美观、高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序。UI for WPF支持MVVM、触摸等,创建的应用程序可靠且结构良好,非常容易维护,其直观的API将无缝地集成Visual Studio…

word如何设置页码?教您快速掌握!

案例:论文排版时,需要对页码进行编号,但我不知道怎么操作。我想如何快速设置word页码,有没有小伙伴可以分享一下方法? word是一款广泛使用的文字处理软件,许多人在撰写论文、报告或其他文档时都需要对页面…