首页 > 编程语言 >docker构建python镜像

docker构建python镜像

时间:2024-05-16 16:57:26浏览次数:23  
标签:容器 1.1 python pytest 镜像 docker 2.0

执行步骤如下:

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
View Code

 

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镜像算是构建完成了

 

标签:容器,1.1,python,pytest,镜像,docker,2.0
From: https://www.cnblogs.com/zcjbky/p/18196247

相关文章

  • Python视频混剪代码
    公司需要剪辑,近期混剪特别多,所以开发了这个,有兴趣的研究研究,如果有好的代码补充优化或者分享麻烦艾特我`importosimporthashlibimportthreadingimportrandomimportthreadingimportmoviepy.editorasmpyfrommoviepy.editorimportAudioFileClip,VideoFileClip,co......
  • python计算时间
       importtimeimportdatetimedefcompare_time(startTime,endTime):#now=datetime.datetime.now()d_start=datetime.datetime.strptime(startTime,'%Y-%m-%d%H:%M:%S')d_end=datetime.datetime.strptime(endTime,'%Y-%m-%......
  • python算法:详细图解: 排序:冒泡排序
    一,什么是冒泡排序?1,冒泡排序和快速排序都属于交换排序所谓交换,就是对序列中两个元素根据键值的比较结果来对换这两个记录在序列中的位置交换排序的特点:将键值较大的元素向序列的尾部移动,键值较小的元素向序列的前部移动2,冒泡排序:BubbleSort,是一种最基础的交换排序,冒泡排......
  • python算法:阿米巴分裂
    一,阿米巴分裂的题目:阿米巴虫用简单分裂的方式繁殖,它每分裂一次要用3分钟,3分钟后会分裂成为2只。将若干个阿米巴放在一个盛满营养液的容器内,45分钟后容器内充满了阿米巴。已知容器最多能够装220只阿米巴。试问,开始的时候往容器内放了多少个阿米巴?二,解析一:分析:已知45......
  • python算法:打字员问题
    一,题目:现有一堆稿件,甲单独打字完成需要6小时,乙单独打字完成需要10小时,甲工作了若干小时后因家中有事由乙接着干,两人完成稿件一共用了7小时,问甲打字用了几个小时?二,解析:1,为了方便计算,我们假设这堆稿件分成60份,可以得到:甲每小时打10份,乙每小时打6份,设甲用时x,取值范围:[......
  • python算法:篮球联赛
    一,篮球联赛题目某大学举办一次全校学生篮球联赛,全校共n支球队,采用单循环制(每两支队之间比赛一场),一共需要进行多少场比赛?二,解析:思路:我们假设按出场顺序进行比赛只有第一个队时,无法比赛第二个队出场时,与1队比赛一场,可得:f(2)=1第三个队出场时,与1队,2队各比赛一场,可以得到......
  • python3.8下载过程
    python网址:https://www.python.org/ 下载——————————————选downloads下的windows 稍微等待一会后进入此界面 向下滑,找到3.8.0(python版本并不是按顺序排列的) 选择适合自己的版本下载——————其中X86适用于32系统,X86-64适合64的web-based:透过网......
  • python算法:握手问题
    一,题目小明在家中举办派对,请邀请好友来参加,来参加宴会的每两个人之间要握手,而且是仅握手一次,则当人数为n时总共需要握手多少次?二,解析1,思路:我们假设每个人到达后按先后顺序握手:这样从人数最少时开始分析:开始时会场中只有小明,是参会的第一个人,假设第二个人到达时,与小明握......
  • python算法:常胜将军
    一,题目有火柴21根,两人依次取,每次每人只可取走1~4根,不能多取,也不能不取,谁取到最后一根火柴谁输。请编写一个人机对弈程序,要求人先取,计算机后取;计算机为“常胜将军”。二,解析要想让计算机是“常胜将军”,就需要让人取到最后一根火柴。这个怎么实现?就是在倒数第二轮时计算机只剩......
  • python算法:求车速
    一,for循环:1,功能:重复执行同一段代码语法:forindexinrange(n):   #循环体代码index:用来依次接收可迭代对象中的元素的变量名range()函数:负责返回整数序列流程图:2,应用range可以同时指定start和stop,用for遍历并打印1234#指定start和s......