您现在的位置是:首页 >学无止境 >Jenkins+Gogs自动远程Docker环境部署django项目网站首页学无止境

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

阳光倾洒 2024-07-09 10:31:09
简介Jenkins+Gogs自动远程Docker环境部署django项目

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实现,待续。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。