docker uvicorn-gunicorn-fastapi 启动自己的fastapi应用

本文介绍如何使用fastapi官方推荐的uvicorn-gunicornDocker镜像部署FastAPI应用,包括准备自己的应用代码、设置容器挂载、安装依赖并启动服务,以及验证部署过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

uvicorn-gunicorn-fastapi

是fastapi官方提及的一个docker镜像,里面包含了一个简易的fastapi应用,同时配置好了gunicorn等组件。用此镜像启动一个容器,包含的简易的fastapi应用会自动运行。本文将替换这个简易的fastapi应用

准备工作

假设你已经下载好 “uvicorn-gunicorn-fastapi ” 镜像:
在这里插入图片描述

准备好你自己的fastapi应用

目录结构如下即可:

  • xxx.com
    • main.py
    • requirements.txt
    • …任意问文件或文件夹

其中main.py,必须是这个名字,不能更改,其内容如下:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
    return {"message": "这是新的"}

其中”app = FastAPI()“,是关键,名字必须是app,必须是个全局变量。gunicorn等wsgi组件会导入此FastAPI实例。你可以在此文件中加入其他的所有视图或路由

假设我本机的目录是:/root/xxx.com

启动容器

docker run --privileged=true -v /root/wujin/rpa-support-app:/app -p 80:80 -d 1798e2413f6d /bin/bash -c "python -m pip install -r /app/requirements.txt -i  https://pypi.tuna.tsinghua.edu.cn/simple;/start.sh"
  • –privileged=true, 避免在容器没有权限读取本机/root/xxx.com文件导致启动失败
  • -v /root/xxx.com:/app,挂在本机目录到容器内目录
  • -p 80:80 端口映射,本机端口映射到容器端口
  • -d 1798e2413f6d,使用哪个镜像
  • /bin/bash -c “python -m pip install -r /app/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple;/start.sh” 容器启动后执行命令。先安装python包再启动fastapi应用,否则会缺少依赖包无法启动。

验证

curl http://127.0.0.1

<think>我们注意到用户提到的版本号(FastAPI 4.1.1, Uvicorn 4.1.2, Gunicorn 4.1.3)并不存在,但用户可能是在寻找与这些版本号相关的大模型技术栈学习资料。实际上,这些工具的最新稳定版本要低得多(FastAPI 0.109.x, Uvicorn 0.29.x, Gunicorn 21.x)。因此,我们将提供基于实际版本的学习资料,并假设用户对构建大模型服务(如LLM API服务)感兴趣。 学习资料将围绕以下主题: 1. 使用FastAPI构建大模型API服务 2. 使用UvicornGunicorn部署高性能ASGI应用 3. 大模型服务特有的优化技巧(如批处理、流式响应、中间件等) 注意:由于版本号错误,我们调整到实际可用版本。</think>### FastAPIUvicornGunicorn 大模型技术栈学习资料 以下学习资料针对**实际可用版本**(FastAPI 0.109.x, Uvicorn 0.29.x, Gunicorn 21.x),涵盖大模型服务部署的核心技术栈: --- ### 一、核心学习路径 #### 1. **FastAPI 深度实践** - **官方文档**:[FastAPI Documentation](https://fastapi.tiangolo.com/) - 异步请求处理 - Pydantic V2 数据验证 - WebSocket 实时通信 - **大模型服务开发**: ```python from fastapi import FastAPI from transformers import pipeline app = FastAPI() llm_pipeline = pipeline("text-generation", model="gpt-3.5-turbo") @app.post("/generate") async def generate_text(prompt: str): return llm_pipeline(prompt, max_length=100)[0] ``` #### 2. **Uvicorn 高性能优化** - **关键配置**: ```bash uvicorn main:app --workers 4 --http h11 --ws websockets \ --timeout-keep-alive 60 --limit-concurrency 100 ``` - `--http h11`:HTTP/1.1 协议优化 - `--limit-concurrency`:防止大模型请求过载[^1] - **异步任务管理**: $$ \text{吞吐量} = \frac{\text{工作进程数} \times \text{并发连接数}}{\text{平均响应时间}} $$ #### 3. **Gunicorn 生产级部署** - **大模型服务配置模板**: ```bash gunicorn main:app -w 8 -b 0.0.0.0:8000 \ -k uvicorn.workers.UvicornWorker \ --max-requests 1000 --timeout 300 ``` - `-w 8`:按 CPU 核心数配置工作进程 - `--max-requests`:防止内存泄漏(关键!)[^1] --- ### 二、进阶学习资源 | 主题 | 资源 | 重点内容 | |------|------|----------| | **大模型流式响应** | [FastAPI StreamingResponse](https://fastapi.tiangolo.com/advanced/custom-response/#streamingresponse) | SSE(Server-Sent Events) 实现 | | **GPU 资源管理** | [NVIDIA Triton + FastAPI](https://github.com/triton-inference-server/server) | 模型并行推理 | | **分布式部署** | [Kubernetes 配置模板](https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker) | HPA 自动扩缩容 | --- ### 三、性能调优公式 大模型服务的关键性能指标: $$ \text{QPS} = \frac{\text{工作进程数} \times \text{每秒请求数}}{\text{平均响应时间 (秒)}} $$ 优化建议: 1. 当 $ \text{GPU 利用率} > 80\% $ 时增加 `-w` 参数 2. 当 $ \text{内存占用} > 70\% $ 时降低 `--max-requests` --- ### 四、实验环境搭建 ```dockerfile FROM python:3.10 RUN pip install fastapi==0.109.1 uvicorn==0.29.0 gunicorn==21.2.0 COPY ./app /app CMD ["gunicorn", "app.main:app", "-k", "uvicorn.workers.UvicornWorker"] ``` --- ### 相关问题 1. 如何监控 FastAPI 服务的 GPU 内存使用情况? 2. Uvicorn 的 `--limit-concurrency` 参数如何影响大模型服务的吞吐量? 3. 在 Kubernetes 中如何配置 Gunicorn 工作进程实现零停机更新? 4. FastAPI 的依赖注入系统如何优化大模型服务的初始化时间? 5. 如何设计大模型 API 的限流策略防止资源耗尽?[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值