# 构建阶段 FROM python:3.11-slim as builder # 设置工作目录 WORKDIR /app # 复制依赖文件 COPY requirements.txt . # 安装依赖 RUN pip install --no-cache-dir -r requirements.txt # 运行阶段 FROM python:3.11-slim # 设置工作目录 WORKDIR /app # 从构建阶段复制安装的依赖 COPY --from=builder /usr/local/lib/python3.11/site-packages/ /usr/local/lib/python3.11/site-packages/ # 复制应用程序文件 COPY main.py . COPY templates/ templates/ # 创建上传文件目录并设置权限 RUN mkdir -p uploads && \ chmod 755 uploads # 设置环境变量 ENV PYTHONUNBUFFERED=1 # 暴露端口 EXPOSE 8000 # 设置健康检查 HEALTHCHECK --interval=30s --timeout=3s \ CMD curl -f http://localhost:8000/ || exit 1 # 创建非root用户 RUN useradd -m -u 1000 appuser && \ chown -R appuser:appuser /app # 切换到非root用户 USER appuser # 设置数据卷 VOLUME ["/app/uploads"] # 启动应用 CMD ["python", "-m", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]