# 项目部署指南:Flask、Gradio与Docker实现流程

发布于:2025-04-08 ⋅ 阅读:(37) ⋅ 点赞:(0)

Python项目部署指南:Flask、Gradio与Docker实践


1. 引言

在机器学习和Web开发中,将模型或应用部署为在线服务是关键一步。本文将介绍如何使用 FlaskGradio 快速构建前端界面,并通过 Docker 容器化实现高效部署,涵盖完整流程图与代码示例。


2. Flask:轻量级Web服务框架

2.1 Flask简介

  • 特点:轻量、灵活,适合快速构建RESTful API和简单前端。
  • 适用场景:需自定义界面逻辑或与后端深度集成的项目。

2.2 示例:Flask部署机器学习模型

# app.py
from flask import Flask, request, jsonify
import joblib

app = Flask(__name__)
model = joblib.load("model.pkl")  # 加载预训练模型

@app.route("/predict", methods=["POST"])
def predict():
    data = request.json["data"]
    prediction = model.predict([data])
    return jsonify({"prediction": prediction.tolist()})

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

2.3 本地运行步骤

# 安装依赖
pip install flask joblib

# 启动服务
python app.py
# 访问 http://localhost:5000/predict

3. Gradio:零代码快速部署工具

3.1 Gradio简介

  • 特点:无需编写前端代码,通过接口自动生成UI,支持一键分享。
  • 适用场景:快速验证模型、共享演示链接(如Hugging Face Spaces)。

3.2 示例:Gradio部署模型

# gradio_app.py
import gradio as gr
import joblib

model = joblib.load("model.pkl")

def predict(text):
    return model.predict([text])[0]

iface = gr.Interface(
    fn=predict,
    inputs=gr.inputs.Textbox(label="输入文本"),
    outputs=gr.outputs.Label(label="预测结果"),
    examples=[["示例输入1"], ["示例输入2"]]
)

if __name__ == "__main__":
    iface.launch(server_name="0.0.0.0", server_port=7860)

3.3 本地运行步骤

# 安装依赖
pip install gradio joblib

# 启动服务
python gradio_app.py
# 访问 http://localhost:7860

4. Docker基础

4.1 Docker核心概念

  • 镜像(Image):打包应用及其依赖的轻量级文件。
  • 容器(Container):镜像的运行实例,隔离环境。
  • Dockerfile:定义镜像构建步骤的脚本。

4.2 Docker常用命令

# 构建镜像
docker build -t my-app .

# 运行容器
docker run -p 5000:5000 my-app

# 查看运行中的容器
docker ps

5. Docker+Flask部署全流程

5.1 目录结构

flask-project/
├── app.py
├── model.pkl
├── requirements.txt
└── Dockerfile

5.2 Dockerfile编写

# 基础镜像
FROM python:3.8-slim

# 设置工作目录
WORKDIR /app

# 复制依赖文件
COPY requirements.txt .

# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt

# 复制应用代码
COPY . .

# 暴露端口
EXPOSE 5000

# 启动命令
CMD ["python", "app.py"]

5.3 构建与运行

# 构建镜像
docker build -t flask-app .

# 运行容器(映射端口)
docker run -p 5000:5000 flask-app

# 访问 http://localhost:5000/predict

6. Docker+Gradio部署全流程

6.1 目录结构

gradio-project/
├── gradio_app.py
├── model.pkl
├── requirements.txt
└── Dockerfile

6.2 Dockerfile编写

FROM python:3.8-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 7860

CMD ["python", "gradio_app.py"]

6.3 构建与运行

docker build -t gradio-app .
docker run -p 7860:7860 gradio-app

# 访问 http://localhost:7860

7. 流程图

编写应用代码
创建Dockerfile
构建Docker镜像
运行容器
通过端口访问服务

8. 进阶:Docker Compose多容器部署

8.1 docker-compose.yml示例

version: '3'
services:
  flask-service:
    build: ./flask-project
    ports:
      - "5000:5000"
    volumes:
      - ./flask-project:/app
  gradio-service:
    build: ./gradio-project
    ports:
      - "7860:7860"

8.2 启动服务

docker-compose up -d

9. 总结

  • Flask:适合需要定制化界面和复杂逻辑的项目。
  • Gradio:适合快速验证和共享模型(如演示链接)。
  • Docker:标准化环境,简化部署流程,确保跨平台一致性。

完整代码示例GitHub仓库链接



网站公告

今日签到

点亮在社区的每一天
去签到