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号