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", "-"]
|