27 lines
812 B
Docker
27 lines
812 B
Docker
# ---------- 基础镜像 ----------
|
|||
|
|
# 使用精简版 Python 3.12 镜像,体积小
|
||
|
|
FROM python:3.12-slim
|
||
|
|
|
||
|
|
# 环境变量:
|
||
|
|
# PYTHONUNBUFFERED=1 让 print / 日志实时输出,不缓存
|
||
|
|
# PYTHONDONTWRITEBYTECODE=1 不生成 .pyc,保持镜像干净
|
||
|
|
ENV PYTHONUNBUFFERED=1 \
|
||
|
|
PYTHONDONTWRITEBYTECODE=1 \
|
||
|
|
TZ=Asia/Shanghai
|
||
|
|
|
||
|
|
WORKDIR /app
|
||
|
|
|
||
|
|
# 先只拷贝依赖清单并安装,利用 Docker 层缓存(代码改动时不必重装依赖)
|
||
|
|
COPY requirements.txt .
|
||
|
|
RUN pip install --no-cache-dir --upgrade pip \
|
||
|
|
&& pip install --no-cache-dir -r requirements.txt
|
||
|
|
|
||
|
|
# 再拷贝项目源码
|
||
|
|
COPY . .
|
||
|
|
|
||
|
|
# 声明应用端口(与 main.py 保持一致)
|
||
|
|
EXPOSE 8002
|
||
|
|
|
||
|
|
# 启动命令:容器内必须监听 0.0.0.0,外部才能访问
|
||
|
|
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8002"]
|