FastAPI Docker 项目教程
项目的目录结构及介绍
FastAPI Docker 项目的目录结构如下:
uvicorn-gunicorn-fastapi-docker/
├── docker-images/
│ └── python3.11/
│ └── Dockerfile
├── .github/
├── .gitignore
├── LICENSE
├── README.md
├── docker-compose.yml
└── requirements.txt
目录结构介绍
docker-images/
: 包含不同 Python 版本的 Dockerfile。python3.11/
: 特定 Python 版本的 Dockerfile。.github/
: GitHub 相关配置文件。.gitignore
: Git 忽略文件配置。LICENSE
: 项目许可证。README.md
: 项目说明文档。docker-compose.yml
: Docker Compose 配置文件。requirements.txt
: Python 依赖包列表。
项目的启动文件介绍
项目的启动文件主要是 Dockerfile 和 docker-compose.yml。
Dockerfile
Dockerfile 内容如下:
FROM python:3.11
WORKDIR /code
COPY ./requirements.txt /code/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
COPY ./app /code/app
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
docker-compose.yml
docker-compose.yml 内容如下:
version: '3.7'
services:
web:
build: .
ports:
- "80:80"
environment:
- WORKER_CLASS=uvicorn.workers.UvicornH11Worker
- TIMEOUT=120
- KEEP_ALIVE=2
- GRACEFUL_TIMEOUT=120
项目的配置文件介绍
项目的配置文件主要是 Dockerfile 和 docker-compose.yml 中的环境变量配置。
环境变量配置
WORKER_CLASS
: 指定 Uvicorn 的工作类。TIMEOUT
: 设置 Gunicorn 的超时时间。KEEP_ALIVE
: 设置 Keep-Alive 连接的等待时间。GRACEFUL_TIMEOUT
: 设置优雅重启的超时时间。
通过这些配置,可以灵活地调整 FastAPI 应用的运行参数,以适应不同的生产环境需求。