文章目录
使用Docker搭建python环境
一、实现思路
学院管理系统主要用于学习做接口测试项目的
该项目来源于“公众号:测试奇谭”,大家可以自行去公众号回复【接口测试项目】
备注:这个学院管理系统,主要是公众号作者用于做接口测试实战的
二、环境准备
- Linux 服务器一台(我的是CentOS7)
- 项目准备:学院管理系统
三、实现思路
- 在linux服务器安装docker
- 根据项目依赖包构建
pyhon
镜像 - 运行新的
python
容器,执行项目
四、搭建python服务
1. 使用Dockerfile构建python镜像
1.1 拉取python镜像
注意哈:学院管理项目只能使用python3.7
docker pull python:3.7.16-alpine3.17
1.2. 编写
Dockerfile
文件
- 将项目依赖包导出来到requirements.txt文件中,txt文件名称可以随意写
pip freeze > requirements.txt
由于我们的 项目中,已存在requirements.txt,这里就不执行操作了 - 在宿主机(安装docker的机子)上新建一个目录(我的目录在/app),将requirements.txt文件复制进去
mkdir -p app cp student_env/requirements.txt app/
- 在app目录下创建Dockerfile文件(文件名必须是Dockerfile,没有后缀)
FROM python:python:3.7.16-alpine3.17WORKDIR /appADD requirements.txt /app RUN pip install -r requirements.txtCMD["python","run_server.py"]
- requirements.txt文件内容如下 - Dockerfile内容以及解释如下
FROM python:3.7.16-slim # 基于python:3.7.16-slim这个基础镜像构建镜像WORKDIR /app #切换换工作空间ADD equirements.txt /app # 将python项目依赖包添加到镜像RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple# 安装依赖包CMD ["python","run_server.py"]# 设置容器执行后自动执行的命令,这里的“run_server.py”是项目的执行入口
- 在app目录下执行镜像构建命令
docker build -t python3.7:student_env .
- -t:镜像名称- 点(.)表示Dockerfile文件所在的目录 - 构建成功后会看到一个新的镜像(docker images)
- 创建一个python容器并查看依赖包是否安装成功搭建
test_env
容器docker run -id --name=test_env python3.7:student_env /bin/sh
进入test_env
容器,并查看安装包dockerexec -it -u 0 test_env /bin/sh
如果存在没安装上的依赖包可以自行在student_env
容器中安装pip install 依赖包==版本 -i http://pypi.douban.com/simple/--trusted-host pypi.douban.com
2.将项目代码映射在python容器中
- 将项目代码所在映射到容器中说明哈:这里我又创建了一个
env
的容器docker run -id -v /root/student_env:/app -p 8099:8099 -u=root --name=env python3.7:student_env``````参数说明:-i:表示运行容器-t:表示容器启动后会进入其命令行-d:守护式方式创建容器在后台运行--name:容器名称-p 8099:8099:端口映射,宿主机端口:python服务端口(8099)-u=root:指定容器用户为root用户-v /root/student_env:/app:将项目代码映射到python容器中
1. 验证一下python项目是否能运行python run_server.py
如果运行时报下面错误(Django版本兼容性导致的)Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x0000024D934BDD08>Traceback (most recent call last):……File "C:\Python37\lib\site-packages\django\contrib\admin\widgets.py", line 152'%s=%s' % (k, v)for k, vin params.items(), ^SyntaxError: Generator expression must be parenthesized
则需跳转到报错路径下,将这个逗号去掉,然后重新键入python run_server.py
命令启动项目。简单一点,不折腾了,直接使用vim
进行修改,其实更好的是使用映射(但是这个不太会)不知道为啥我容器中VIM
安装不了先使用docker cp
拷贝进行修改#将容器中的文件拷贝出来dockercp 0e49a9fb637d:/usr/local/lib/python3.7/site-packages/django/contrib/admin/widgets.py .#将容器中的文件拷贝回去dockercp widgets.py 0e49a9fb637d:/usr/local/lib/python3.7/site-packages/django/contrib/admin/widgets.py
2. 在验证一下会提示8099端口会占用,因为我在启动dokcer容器有已经运行了run_server.py
我们在浏览中输入:ip:8099/api/departments/
即可如果出现下图,则允许正确
本文转载自: https://blog.csdn.net/AAIT11/article/details/130075077
版权归原作者 AAIT11 所有, 如有侵权,请联系我们删除。
版权归原作者 AAIT11 所有, 如有侵权,请联系我们删除。