P0: ORM-迁移同步 - 新增 RawEvent/IngestFailure/DataQualityCheck/DataLineage 4 个模型类 - MatchStats 补充 xg_source/xg_updated_at/xg_source_record_id 字段 - 修复 server_default=_utcnow → func.now()(4 处) - BigInteger 导入 P1: - log_buffer.py 移除 threading.Lock(asyncio 单线程下无需锁) - 确认 context_builder/understat/injuries 等已有修复 P2: - Dockerfile 新增非 root 用户 + .dockerignore - 前端 fetchDashboard 修复 total 字段(改用 items.length) - 前端 fetchSystemConfig 改用真实 /admin/settings 端点 - 修复 validation.py return self"" → return self P3: - predict.py 缓存加 _CACHE_MAX_SIZE=200 淘汰 - eval.py get_eval_summary 加 limit 参数(默认 1000)+ 返回 total_settled - orchestrator.py agent provider 配置缓存 60s
26 lines
622 B
Docker
26 lines
622 B
Docker
FROM python:3.11-slim
|
|
|
|
WORKDIR /app
|
|
|
|
# 直连官方源不稳定,固定使用清华 PyPI 镜像
|
|
ENV PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
|
|
|
|
# P2-5: 创建非 root 用户(容器安全最佳实践)
|
|
RUN groupadd --system profeto && useradd --system --gid profeto profeto
|
|
|
|
RUN pip install --no-cache-dir hatchling
|
|
COPY pyproject.toml README.md ./
|
|
COPY src ./src
|
|
|
|
RUN pip install --no-cache-dir .
|
|
|
|
# 将工作目录所有权移交给非 root 用户
|
|
RUN chown -R profeto:profeto /app
|
|
|
|
EXPOSE 8000
|
|
|
|
# 以非 root 用户运行
|
|
USER profeto
|
|
|
|
CMD ["uvicorn", "src.api.app:app", "--host", "0.0.0.0", "--port", "8000"]
|