20230308--Jenkins+Gogs自動遠程Docker環(huán)境部署django項目

1.Jenkins安裝或確認必要插件

jenkins安裝或確認必要插件gitlab、Publish Over SSH。
Dashboard--Manage Jenkins--Plugin Manager


2.Publish Over SSH配置

jenkins配置SSH連接django服務(wù)部署的對象服務(wù)器
Dashboard--Manage Jenkins--Configure System,找到 Publish over SSH中SSH Server。輸入目標服務(wù)器IP、登錄用戶、登錄用戶密碼等,最后Test Configuration


3.Jenkins中創(chuàng)建Job

Dashboard--New Item--輸入Item name--選擇「構(gòu)建一個多配置項目」--點擊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--設(shè)置SSH Server、Transfers

注意docker build image可能耗時較長,默認該過程限時120S,需要Advanced選項中延長timeout時間。

注意Transfers Set Source files、Remote directory、Exec command,其中Exec Command中項目執(zhí)行sh腳本參考如下:

# 由于向Docker容器中拷貝文件會影響遞歸結(jié)構(gòu),所以需要將項目目錄先壓縮
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 ./
# 創(chuàng)建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鉤子

選擇我的倉庫--倉庫設(shè)置--管理Web鉤子--添加Web鉤子--選擇Gogs--填寫推送地址、選擇數(shù)據(jù)格式、密鑰文本可免、設(shè)置希望觸發(fā)Web鉤子的事件、選擇激活--點擊添加Web鉤子。參考20230129-Jenkins+Gogs自動打包項目

5.測試

開發(fā)環(huán)境提交代碼

下載項目源碼

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

編寫制作Django項目鏡像Dockerfile文件

# vi Dockerfile
FROM almalinux       #選擇almalinux為基礎(chǔ)鏡像

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環(huán)境

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腳本執(zhí)行確認:


遠程Docker服務(wù)器鏡像制作成功,容器啟動正常,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

此僅僅是實現(xiàn)Django項目的測試發(fā)布,完整的發(fā)布,需要nginx+uwsgi+django實現(xiàn),待續(xù)。

參考URL

https://www.cnblogs.com/91parson/p/16511416.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容