前言、
实习是时候有个需求是把已经写完的代码部署到Linux上,做的时候走了很多弯路,记录一下,希望能帮到你们。
一、工具安装
Windows直接上官网下载就行了Download Docker Desktop | Docker。
下载完了之后安装就可以了,如果不需要从仓库抓取或者上传镜像的话就不要登录了,不然要科学上网。
二、准备工作
之后看一下你import了多少需要pip的库,使用一次pip list获取版本号。把他们写进requirements.txt里,格式为dlib==19.24.2回车。之后把这个txt放到你的项目文件夹里。
然后把py文件里需要加载的文件改为相对路径,把这些文件cv一下放到项目文件夹里。
最后编写一个Dockerfile文件,文件名就叫做Dockerfile,没有后缀。
可以先新建txt,编写完了之后在cmd里cd到当前文件夹。默认是C盘,可能cd到D盘没反应,这时候需要输入“D:”,就好了。然后输入命令:
ren Dockerfile.txt Dockerfile
就可以把后缀删除了。
然后以下是该文件的编写内容:
# 指定基础映像
FROM python:3.10
# 设置软件包源为中科大镜像源
RUN echo "deb https://mirrors.ustc.edu.cn/debian/ buster main" > /etc/apt/sources.list && \
echo "deb-src https://mirrors.ustc.edu.cn/debian/ buster main" >> /etc/apt/sources.list
# 更新软件包源
RUN apt-get update
# 安装 libgl1-mesa-glx 软件包
RUN apt-get install -y libgl1-mesa-glx
# 设置工作目录
WORKDIR /app
COPY requirements.txt .
# 安装依赖项
RUN pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --default-timeout=60 --no-cache-dir -r requirements.txt
# 复制 Python 文件和依赖项清单
COPY test7.py .
COPY dlib_face_recognition_resnet_model_v1.dat \
shape_predictor_5_face_landmarks.dat \
shape_predictor_68_face_landmarks.dat \
haarcascade_frontalface_default.xml .
# 指定容器启动命令
CMD ["python", "./test7.py"]
使用镜像的目的是requirements的pip太慢,用了镜像能够显著加快速度。
三、开始打包
准备工作结束,开始进入正题。
老规矩,在cmd里cd到你的文件夹。执行命令
docker build -t your_image_name .
这里的your_image_name就是你的镜像名,可以自己改,我这里建议是直接复制粘贴使用,最后打包成镜像之后再改。
docker run -v <文件名>:/app your_image_name
之后执行这个命令,把你py文件里需要用的文件所在的文件夹挂载到容器里,这样子原本的相对路径仍然能够实现,不会报错。
如果这个命令运行结束之后没有报错,那就是成功运行了,我们可以通过
docker ps -a
来查看容器运行状态,和
docker images
查看镜像。
如果都没有问题,就可以打包成tar传输了。
docker save -o <路径>.tar your_image_name
然后我自己做的时候因为经常失败导致电脑C盘直接被撑爆了,所以提醒一下记得定期把运行失败的镜像和容器删除。这里是一键删除的方法:
docker stop $(docker ps -aq)停止所有容器的运行
docker rm $(docker ps -aq)删除所有容器
docker rmi $(docker images -q)删除所有镜像
结束
希望这篇记录能够帮助到各位