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

news/2024/11/23 2:14: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             #安装uwsgiRUN 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.ppmy.cn/news/105385.html

相关文章

汇编调试及学习

汇编调试 打印寄存器的值 打印内存地址 打印8字节,就是64位 打印格式 是从低位取过来的 b 字节 h 双字节 w四字节 g八字节 前变基 后变基 。 后变基这个变基会发生变化的。前变基变基不会发生变化需要用!号。 前变基 , 加了&#xff0…

项目可行性研究报告模板

文章目录 第一章 项目概述第二章 项目建设单位概况第三章 需求分析和项目建设的必要性第四章 总体建设方案第五章 本期项目建设方案第六章 项目招标方案第七章 环保 消防 职业安全第八章 项目组织机构和人员培训第九章 项目实施进度第十章 投资估算和资金来源第十一章 效益与评…

老胡周刊QA微信机器人(基于ChatGPT)

背景 先做个介绍吧,老胡的信息周刊是我从2021-08-16创立的周刊,截止到目前(2023-05-29)将近两年时间,目前已经有92期周刊,中间基本没有断更过,一共发布资源统计如下: 🎯 项目 288🤖 …

无代码玩转GIS应用,我也在行【文末送书】

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通…

高速下载ChatGLM模型文件的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

华为OD机试真题B卷 Java 实现【寻找峰值】,附详细解题思路

一、题目描述 给定一个长度为n的数组nums,请你找到峰值并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个所在位置即可。 1.峰值元素是指其值严格大于左右相邻值的元素。严格大于即不能有等于; 2.假设 nums[-1] n…

项目初始化

项目初始化 资源准备 初始化工程和安装 完成基础项目配置:名字,图标,应用id 核对设计稿,准备资源图片,导入图片 项目配置TypeScript 安装 TypeScript npm install --save-dev typescript 生成tsconfig.json tsc …

AcWing第 105 场周赛

AcWing 5029. 极值数量 给定一个长度为 n� 的整数数组 a1,a2,…,an�1,�2,…,��。 如果一个元素左右两边均有相邻元素(也就是不位于数组的两端),且满足以下两个条件之一&#xff1a…