掌握FastAPI,轻松部署到Docker容器:从入门到实战

引言
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,由 Python 3.6+ 支持。它具有简洁的语法和丰富的功能,使得开发人员可以轻松创建高性能的 API 服务。本文将带领您从入门到实战,了解如何使用 FastAPI 创建 API,并将其部署到 Docker 容器中。
一、FastAPI 入门
1.1 安装 FastAPI
首先,您需要在您的计算机上安装 Python。然后,通过以下命令安装 FastAPI:
pip install fastapi uvicorn
1.2 创建 FastAPI 应用
创建一个名为
main.py
的 Python 文件,并添加以下代码:
from fastapi import FastAPI

app = FastAPI()

@app.get(“/”)
async def read_root():
return {“message”: “Hello, World!”}
这段代码创建了一个简单的 FastAPI 应用,它有一个根路由,当访问根路径时,会返回 “Hello, World!“。
1.3 运行 FastAPI 应用
使用以下命令运行您的 FastAPI 应用:
uvicorn main:app –reload
这将启动一个 Web 服务器,并允许您通过浏览器访问
http://127.0.0.1:8000/
。
二、FastAPI 高级功能
FastAPI 支持多种高级功能,如数据验证、依赖注入、响应模型等。以下是一些常用的高级功能:
2.1 数据验证
在 FastAPI 中,您可以使用 Pydantic 进行数据验证。以下是一个示例:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel, EmailStr

app = FastAPI()

class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None

@app.post(“/items/”)
async def create_item(item: Item):
if item.price <= 0: raise HTTPException(status_code=400, detail="Price must be greater than 0") return item 2.2 依赖注入 FastAPI 支持依赖注入,您可以使用 Depends 函数来创建依赖关系。以下是一个示例: from fastapi import FastAPI, Depends, HTTPException from fastapi.security import OAuth2PasswordBearer app = FastAPI() oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token") def get_current_user(token: str = Depends(oauth2_scheme)): # 验证 token,获取用户信息 return {"username": "user1"} @app.get("/users/me") async def read_users_me(current_user: dict = Depends(get_current_user)): return current_user 2.3 响应模型 您可以使用 Pydantic 模型来定义响应结构。以下是一个示例: from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class Item(BaseModel): id: int name: str description: str = None price: float tax: float = None @app.get("/items/{item_id}") async def read_item(item_id: int, item: Item = Depends(Item)): return item 三、部署 FastAPI 到 Docker 3.1 创建 Dockerfile 创建一个名为 Dockerfile 的文件,并添加以下内容: # 使用 Python 官方镜像作为基础镜像 FROM python:3.8-slim # 设置工作目录 WORKDIR /app # 复制代码到容器 COPY . /app # 安装依赖 RUN pip install --no-cache-dir -r requirements.txt # 暴露端口 EXPOSE 8000 # 运行 FastAPI 应用 CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] 3.2 创建 requirements.txt 创建一个名为 requirements.txt 的文件,并添加以下内容: fastapi uvicorn pydantic 3.3 构建和运行 Docker 容器 使用以下命令构建 Docker 镜像: docker build -t fastapi-app . 然后,使用以下命令运行 Docker 容器: docker run -d -p 8000:8000 fastapi-app 现在,您可以通过 http://localhost:8000/ 访问您的 FastAPI 应用。 四、总结 通过本文,您已经了解了如何使用 FastAPI 创建 API,并将其部署到 Docker 容器中。FastAPI 是一个功能强大的 Web 框架,可以帮助您快速构建高性能的 API 服务。希望本文对您有所帮助。