28 lines
783 B
Docker
28 lines
783 B
Docker
# Dockerfile:FastAPI 应用镜像(gunicorn + uvicorn worker 多进程生产模式)
|
||||
|
|
FROM python:3.10-slim
|
|||
|
|
|
|||
|
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
|||
|
|
PYTHONUNBUFFERED=1 \
|
|||
|
|
TZ=Asia/Shanghai
|
|||
|
|
|
|||
|
|
WORKDIR /app
|
|||
|
|
|
|||
|
|
# 先装依赖,利用 Docker 层缓存
|
|||
|
|
COPY requirements.txt .
|
|||
|
|
RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
|
|||
|
|
|
|||
|
|
# 拷贝项目代码
|
|||
|
|
COPY . .
|
|||
|
|
|
|||
|
|
EXPOSE 8000
|
|||
|
|
|
|||
|
|
# gunicorn 多 worker 启动(uvicorn.workers.UvicornWorker 兼容 FastAPI 异步)
|
|||
|
|
# 生产环境建议 worker 数 = CPU 核数 * 2 + 1
|
|||
|
|
CMD ["gunicorn", "main:app", \
|
|||
|
|
"--workers", "4", \
|
|||
|
|
"--worker-class", "uvicorn.workers.UvicornWorker", \
|
|||
|
|
"--bind", "0.0.0.0:8000", \
|
|||
|
|
"--timeout", "60", \
|
|||
|
|
"--access-logfile", "-", \
|
|||
|
|
"--error-logfile", "-"]
|