Docker+Jenkins實現Python 接口自動化部署
簡單說一下docker,docker 是一種開源的應用容器引擎,它可以讓開發者打包他們的應用以及依賴包到一個可移植的容器中,然后發布到Linux服務器上。
在使用docker之前,可能需要花一周左右的實時間先簡單學一下docker知識。
我們需要學習docker客戶端工具、docker命令的基本使用、Dockerfile的編寫和Jenkins構建命令的配置。
下面,我將基于我在項目測試中的實踐作一下介紹。
安裝Docker Desktop客戶端工具
docker官網:https://www.docker.com/

Windows系統安裝docker,可能需要先行安裝WSL(Windows Subsystem for Linux),Docker Desktop 推薦使用 WSL 2 作為后端運行環境,因為 WSL 2 提供了更高效的 Linux 內核支持,是否需要安裝需要結合自己電腦系統情況。
比如我的電腦系統是Windows 11 家庭中文版,就需要先安裝WSL。
如需安裝,可在電腦命令行中執行以下命令:
#安裝WSL wsl --install #查看當前版本 wsl --version

#列出當前已安裝的所有 WSL 發行版及其詳細信息 wsl -l -v #將新安裝的 WSL 發行版的默認版本設置為 WSL 2 wsl --set-default-version 2
驗證docker是否安裝成功

如果出現docker的版本信息,說明docker安裝成功
自定義Python項目鏡像
由于我使用的是Python 3.10.5,因此我需要基于Python 3.10.5來自定義我的項目鏡像。
1、首先啟動docker客戶端工具,然后打開電腦命令行,執行以下命令:
docker pull python:3.10.5
命令執行成功之后,可以登錄客戶端工具或者在電腦命令行中使用命令查看鏡像文件。
客戶端工具查看

命令行查看:執行docker images命令

2、基于Python3.10.5基礎鏡像,結合當前項目的依賴,構建自定義鏡像文件my-pyhton-base。
2.1 列出當前項目所需的所有依賴包及其版本
在pycharm終端執行命令:
pip freeze > requirements.txt

會在當前項目目錄下生成以下文件

2.2創建Dockerfile文件,使用docker build命令構建鏡像。

在電腦端進入Dockerfile文件所在目錄中

打開命令行工具,執行以下命令:
docker build -t my-python-base:3.10.5 .
構建鏡像成功之后,會在當前目錄下生成my-python-base.tar文件,同樣可以在docker客戶端工具或電腦命令行中查看,可以看到my-pyhton-base鏡像文件已經生成。

導出該鏡像文件為tar壓縮文件,上傳至服務器
3.1導出自定義鏡像文件
docker save -o my-python-base.tar(可自定義)my-python-base:3.10.5(本地鏡像名)
3.2將歸檔文件加載到測試服務器的docker鏡像庫中
-
在測試服務器執行命令:
docker load -i my-python-base.tar
加載成功后,執行docker images|grep ‘my-python-base’命令,查看

3.3基于自定義Python鏡像創建Dockerfile文件
在當前項目下重新創建Dockerfile文件,這次的Dockerfile文件是基于2.2中基于我自定義的鏡像文件。
可以看到下方截圖中第一行代碼:FROM my-python-base:3.10.5

在jenkins中配置構建任務
4.1 配置構建任務

注意
① xqls_autotest是自定義的名稱,需要與步驟2.2中創建的Dockerfile文件中的工作目錄名稱保持一致。
② 在jenkins每次構建時,需要先停止并刪除正在運行的容器,并刪除原有的鏡像文件并重新構建,最后啟動容器。
③ 由于在2.2步驟中已經將所需的項目依賴包都安裝并打包在鏡像文件中了,所以每次構建時,不需要重新下載了,這樣保證每次構建時的環境是一樣的,且速度很快。

4.2執行構建
可以看到構建過程中,按照設置的命令啟動了容器。

按照Dockerfile文件中的指令,會基于我自定義的Python鏡像文件。
首先將測試服務器(宿主機)中的Python代碼拷貝到xqls_autotest容器中,
然后以xqls_autotest:latest鏡像為模板啟動容器執行項目代碼。

檢查構建結果
可以在下圖中看到最終項目代碼是執行成功了。

由于在jenkins中配置了定時構建,所以每天固定時間jenkins都會從代碼倉庫中拉取代碼自動構建,并生成測試報告。

通過這段時間使用docker結合Jenkins進行測試代碼自動化部署,確實感覺方便了不少,主要有以下幾大優點:
①實現代碼容器化,形成環境隔離。保證了本地環境、測試環境代碼及其環境依賴的一致性,提高了代碼部署的穩定性和可維護性。
②便于快速部署和啟動。docker容器由于輕量,啟動非常迅速。
③實現自動化持續集成:通過設置構建任務觸,可以實現自動化執行代碼拉取、構建、測試、測試報告生成,方便動態監控測試結果,提升交付效率。
本篇文章主要是介紹我在項目測試中應用docker、jenkins的場景和方式,對于還沒接觸過或者不了解docker、jenkins的同學,可能還需要自己細致學習一下相關的知識,掌握相關知識后能幫助大家更好地應用和拓展。

浙公網安備 33010602011771號