使用Dockerfile创建镜像来部署一个基于Flask的深度学习项目

使用Dockerfile创建镜像来部署一个基于Flask的深度学习项目

一. 准备工作

本例程主要介绍了使用Dockerfile创建镜像来部署一个基于Flask的深度学习项目,准备工作如下:

  1. 认识Docker
    在这里插入图片描述
    Docker是一种容器技术,其口号就是“Build、Share and Run”,能够方便、快捷地部署应用项目。
  2. flask应用
    flask是一款轻量型的Web服务框架,功能齐全,应用广泛。
  3. YOLOv5
    YOLOv5是YOLO系列最新一版的目标识别框架,具有检测速度快、识别准确率高等特点。
  4. 运行环境
    (1)因Docker主要支持Linux系统,本例采用Ubuntu18.04系统。
    (2)需预先在系统上安装docker。
    (3) 安装Pycharm。
    (4)注册一个hub.docker.com账户。

二. Docker操作

1. 项目代码
项目目录如下:
在这里插入图片描述
特别说明:
run.py:本项目的主程序。
Dockerfile:无后缀,在工作目录。
app文件夹:将主要代码放到此处。
app/views.py:flask框架下的route函数均在此处。
app/yolo:YOLOv5的相关代码。
app/utils:项目通用代码。
2. 编写Dockerfile

# This dockerfile unses the python:3.8.0 image
# VERSION 1 - EDITION 1
# Author: imqtan

# Base image to use, this must be set as the first line
FROM python:3.8.0

# Maintainer:docker_user<docker_user@email.com>
MAINTAINER imqtan hardenqiu@foxmail.com

COPY . /aep-ai-seal-v1-yolov5

WORKDIR /aep-ai-seal-v1-yolov5

RUN apt-get update

RUN apt-get install -y libgl1-mesa-dev

RUN pip install --upgrade pip

RUN pip install torch==1.8.2+cpu torchvision==0.9.2+cpu torchaudio==0.8.2 -f https://download.pytorch.org/whl/lts/1.8/torch_lts.html

RUN pip install -r requirements.txt

EXPOSE 5000

ENTRYPOINT ["python"]

CMD ["run.py"]

特别指出:
FROM python:3.8.0:python 3.8.0作为基础镜像(或父镜像)。
COPY:其用法为COPY [src] [dest],此处src为”.“,本例即将工作目录下的全部代码拷贝到dest(镜像下的目录)。
WORKDIR:其用法为WORKDIR [dir],本例即将本地工作目录设置为dir的"/aep-ai-seal-v1-yolov5"。
RUN apt-get update:拉取下来的基础镜像需要更新一下。
RUN apt-get install -y xxxxx:安装项目所需的一些组件。
RUN pip install --upgrade pip:更新pip,以便后续顺利安装其他组件。
RUN pip install torch-xxxx:加载YOLOv5所需的组件pytorch。
RUN pip install -r requirements.txt:加载镜像所需的库。
EXPOSE 5000:抛出的端口。
ENTRYPOINT [“python”]:python环境来运行下面的程序。
CMD [“run.py”]:需要在镜像中运行的主程序。
3. Build Dockerfile文件
方法1-使用Pycharm来Build:
在这里插入图片描述
1处:直接打开Dockerfile进行编辑。
2处:”Edit Configuration…”来设置Docker信息。
3处:查看现有Docker的镜像信息(若不显示,双击来connect)。
在这里插入图片描述
点开2处后,设置镜像标签,如“aep-ai-seal:2.0”,然后“OK”,保存设置。
运行该Dockerfile文件,执行Build,直到出现编译成功,3处可查看编译成功的镜像。
方法2-使用终端来Build:
在这里插入图片描述
打开一个终端,进入到工作目录下,输入“docker build -t aep-ai-seal:2.0 .",进行编译。需要注意,镜像名与tag可以根据需要命名,指令后的”.“不要遗漏,其表示默认Dockerfile,注意核对该文件的命名。构建完成后,也可以在Pycharm的”3处“查看镜像。
4. Push项目镜像到公共仓库
方法1-使用Pycharm来Push镜像:
在这里插入图片描述
点击”1处“或”2处“,弹出”Push镜像“的对话框,填入相关信息,点击”OK“,开始Push镜像。
在这里插入图片描述
方法2-使用终端来Push镜像:
指令:

docker push imqtan/aep-ai-seal:2.0

5. 测试镜像
打开终端,查看是否已有该镜像。
在这里插入图片描述

图中可看到,已经存在该项目的镜像。“aep-ai-seal”与“imqtan/aep-ai-seal”具有相同的ID,其实是一个镜像。
然后,输入指令便可启动一个docker镜像。

# 启动该项目的镜像
docker run -p 5000:5000 aep-ai-seal:2.0

三. 可能遇到的问题

本例程仅仅给出了一个基于Flask的深度学习项目部署的大致流程,docker以及Dockerfile有着丰富的指令集,对于复杂的项目部署,需要进一步了解其他指令的使用。

  1. 网络不佳导致加载失败:请更换网络环境重新开始。
  2. docker的Push失败:请检查网络环境,请登录docker账号。
  3. “docker run -p 5000:5000 aep-ai-seal:2.0“报错:可能原因是主机5000的端口已被占用,请将指令改为“docker run aep-ai-seal:2.0“,即不指定端口映射。
  4. 安装超时:可能由DNS导致,将编译指令改为“docker build --network=host -t aep-ai-seal:2.0 .“。
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
使用Python编写一个基于Flask的完整Web小项目,我们需要了解Flask框架的基本原理和使用方法。Flask一个轻量级的Web框架,它基于Python语言,具有简单可扩展的特点。 首先,我们需要安装Flask模块,使用pip命令即可安装,例如: ``` pip install Flask ``` 然后,我们需要确定项目的功能和需求,设计相应的页面和功能模块。在Flask项目中,我们通常建立一个app.py模块,定义主程序和路由规则。在模块中,我们可以使用Flask提供的装饰器函数来定义和处理请求,例如: ``` from flask import Flask, render_template app = Flask(__name__) @app.route("/") def index(): return render_template("index.html") ``` 这里使用了@app.route装饰器来指定路由规则和处理函数,当用户访问网站根目录时,会调用index函数并渲染index.html模板。 除了路由规则,我们还需要定义模板文件和静态文件,这些文件通常位于一个名为templates和static的目录内。在Flask使用render_template函数来渲染模板文件,如下: ``` from flask import render_template @app.route("/") def index(): return render_template("index.html") ``` 然后,在模板文件中可以使用类似Jinja2语法的标记来插入变量和逻辑控制语句,如下: ``` <!DOCTYPE html> <html> <head> <title>Flask App</title> </head> <body> {% if user %} <p>Hello, {{ user }}!</p> {% else %} <p>Hello, World!</p> {% endif %} </body> </html> ``` 这里使用了Jinja2模板语言中的变量和逻辑控制标记来渲染页面。 最后,我们需要运行Flask应用程序,使用类似下面的代码: ``` if __name__ == "__main__": app.run(debug=True) ``` 这里使用debug=True来启用调试模式,以便在开发过程中可以及时发现和调试问题。 总之,使用PythonFlask框架,我们可以轻松地构建出一个完整的Web小项目,提供用户访问与交互,实现业务逻辑和数据处理等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值