Docker构建python镜像
执行步骤如下:
1、使用Dockerfile创建有 接口自动化框架执行环境 的python镜像
2、根据python镜像,编写shell脚本 创建容器
3、拉取git(接口自动化框架)上的代码,使用python执行接口自动化框架
4、执行完成之后自动销毁容器
使用Dockfile创建python镜像
前置:需创建目录py38dockerfile(名称随意),并在此目录下放入 1、requirements.txt文件 2、Dockerfile文件 如下图:
1、创建requirements.txt文件,写入python要安装的依赖包 如下
allpairspy==2.5.0 allure-pytest==2.9.45 allure-python-commons==2.9.45 altgraph==0.17.3 anyio==3.3.4 appdirs==1.4.4 Appium-Python-Client==2.1.2 asgiref==3.4.1 async-generator==1.10 atomicwrites==1.4.0 attrs==21.2.0 auto-testing==0.0.2.1 bcrypt==3.2.0 black==19.10b0 Brotli==1.0.9 cachetools==5.0.0 certifi==2020.12.5 cffi==1.15.0 chardet==4.0.0 click==8.0.1 colorama==0.4.4 colorlog==6.7.0 contourpy==1.1.1 cryptography==35.0.0 cssselect==1.1.0 cssutils==2.4.0 cycler==0.12.1 ddt==1.4.4 Django==2.2.13 docopt==0.6.2 Dumper==1.2.0 et-xmlfile==1.1.0 exceptiongroup==1.1.2 execnet==2.0.2 Faker==9.5.2 fastapi==0.70.0 Flask==2.0.1 fonttools==4.43.1 gevent==23.9.1 greenlet==2.0.2 h11==0.12.0 har2case==0.3.1 httprunner==3.1.6 hypothesis==6.87.3 idna==2.10 importlib-resources==6.1.0 iniconfig==1.1.1 itsdangerous==2.0.1 Jinja2==2.11.3 jmespath==0.9.5 jsonpath==0.82 kiwisolver==1.4.5 loguru==0.4.1 lxml==4.8.0 MarkupSafe==2.0.1 more-itertools==8.12.0 multi-key-dict==2.0.3 mysql-connector==2.2.9 mysql-replication==0.43.0 numpy==1.24.4 opencv-python==4.8.0.76 openpyxl==3.1.2 packaging==24.0 paho-mqtt==1.6.1 pandas==2.0.3 paramiko==2.8.0 pathspec==0.9.0 pbr==5.11.1 pefile==2023.2.7 pika==1.3.2 Pillow==10.0.1 pluggy==0.13.1 premailer==3.10.0 psutil==5.9.5 py==1.10.0 pyasn1==0.5.0 pycparser==2.20 pycryptodome==3.18.0 pydantic==1.8.2 pyinstaller==5.7.0 pyinstaller-hooks-contrib==2022.15 PyJWT==2.7.0 PyMySQL==1.1.0 PyNaCl==1.4.0 pyOpenSSL==21.0.0 pytest==7.4.0 pytest-html==2.1.1 pytest-instafail==0.5.0 pytest-metadata==1.11.0 pytest-rerunfailures==12.0 pytest-sugar==1.0.0 pytest-testreport==1.1.6 pytest-timeout==2.1.0 pytest-xdist==3.5.0 python-dateutil==2.8.2 python-docx==1.1.0 python-dotenv==1.0.0 python-jenkins==1.8.0 pytz==2021.3 pywebio==1.8.2 pywin32-ctypes==0.2.0 PyYAML==5.4.1 QScintilla==2.14.1 qt5-applications==5.15.2.2.3 qt5-tools==5.15.2.1.3 regex==2021.11.10 requests==2.25.1 retrying==1.3.3 rsa==4.9 ruamel.yaml==0.18.5 ruamel.yaml.clib==0.2.8 selenium==4.1.0 sentry-sdk==0.14.4 six==1.16.0 sniffio==1.2.0 sortedcontainers==2.4.0 SQLAlchemy==2.0.20 sqlparse==0.4.2 starlette==0.16.0 termcolor==2.4.0 text-unidecode==1.3 toml==0.10.2 tomli==2.0.1 tornado==6.3.1 trio==0.19.0 urllib3==1.26.4 xlrd==1.2.0 zipp==3.17.0
2、创建Dockerfile文件
在py38dockerfile同目录下创建Dockfile文件(注:Dockerfile 文件名称首字母大写,名称固定),内容如下:
FROM python:3.8.3 # 基于的基础镜像,镜像文件来源。本地没有则自动拉取DockerHub上面的 WORKDIR /opt/zcj #切换工作空间目录 ADD ./requirements.txt #将python项目依赖包文件添加到镜像 COPY requirements.txt requirements.txt#镜像中需要添加的文件\依赖 RUN pip3 install -r ./requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --no-cache-dir --no-dependencies #安装依赖包 CMD ["python3", "run.py"] #设置容器执行后自动执行的命令,这里run.py是我们自动化框架的执行入口文件,docker run创建容器之后,若传了执行命令,会把cmd的命令覆盖
3、制作镜像
docker build -t ImageName:TagName dir
ImageName - 镜像名称 python3.8
agName - 镜像的标签 v1
dir - Dockerfile所在的目录,当前名录为 “.”
docker build -t python3.8:v1 .
4、编写build.sh脚本, 运行python镜像,生成容器
echo "运行容器python执行自动化" #输出日志 docker run --rm -w=$WORKSPACE --volumes-from=jenkins3 python3.8:v1 echo "python执行自动化执行成功"
#-w=$WORKSPACE:指定workspace
#--volumes-from=jenkins_save01:将jenkins3容器中的workspace映射到python容器中,此时jenkins中git拉下来的代码就会被映射进去
# jenkins3 为 jenkins容器名称---->>点击 Jenkins容器搭建 传送门
end:到此处..... python镜像算是构建完成了
本文来自博客园,作者:攻城狮-tester,转载请注明原文链接:https://www.cnblogs.com/zcjbky/p/18196247