使用Docker把python文件部署到Linux上

前言、

实习是时候有个需求是把已经写完的代码部署到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)删除所有镜像

结束

希望这篇记录能够帮助到各位

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值