Spaces:
Configuration error
Configuration error
| # 使用官方Python 3.10 slim镜像 | |
| FROM python:3.10-slim | |
| # 安装系统依赖 | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| git \ | |
| build-essential \ | |
| libgomp1 \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # 设置工作目录 | |
| WORKDIR /app | |
| # 克隆代码 | |
| RUN --mount=type=secret,id=GH_USER \ | |
| --mount=type=secret,id=GH_TOKEN \ | |
| git clone https://$(cat /run/secrets/GH_USER):$(cat /run/secrets/GH_TOKEN)@github.com/leoncool23/tcm_expert_builder.git . | |
| # 创建详细诊断脚本 | |
| RUN echo '#!/bin/bash' > diagnose.sh && \ | |
| echo 'echo "=== 详细项目诊断 ==="' >> diagnose.sh && \ | |
| echo 'echo "=== models目录结构 ==="' >> diagnose.sh && \ | |
| echo 'ls -la models/' >> diagnose.sh && \ | |
| echo 'echo "=== models/schemas.py 内容预览 ==="' >> diagnose.sh && \ | |
| echo 'head -20 models/schemas.py' >> diagnose.sh && \ | |
| echo 'echo "=== 检查 ClinicalFinding 类 ==="' >> diagnose.sh && \ | |
| echo 'grep -n "class.*ClinicalFinding" models/schemas.py || echo "未找到 ClinicalFinding 类"' >> diagnose.sh && \ | |
| echo 'echo "=== 检查所有类定义 ==="' >> diagnose.sh && \ | |
| echo 'grep -n "^class " models/schemas.py || echo "未找到任何类定义"' >> diagnose.sh && \ | |
| echo 'echo "=== services/bn_manager.py 导入语句 ==="' >> diagnose.sh && \ | |
| echo 'grep -n "from models.schemas import" services/bn_manager.py' >> diagnose.sh && \ | |
| chmod +x diagnose.sh | |
| # 运行诊断 | |
| RUN ./diagnose.sh | |
| # 创建修复脚本(临时解决方案) | |
| RUN echo '#!/bin/bash' > fix_imports.sh && \ | |
| echo 'echo "=== 尝试修复导入问题 ==="' >> fix_imports.sh && \ | |
| echo '# 检查 models/schemas.py 中实际存在的类' >> fix_imports.sh && \ | |
| echo 'echo "实际存在的类:"' >> fix_imports.sh && \ | |
| echo 'python -c "' >> fix_imports.sh && \ | |
| echo 'import sys' >> fix_imports.sh && \ | |
| echo 'sys.path.insert(0, \"/app\")' >> fix_imports.sh && \ | |
| echo 'try:' >> fix_imports.sh && \ | |
| echo ' import models.schemas as schemas' >> fix_imports.sh && \ | |
| echo ' print(\"可用的类和函数:\", [name for name in dir(schemas) if not name.startswith(\"_\")])' >> fix_imports.sh && \ | |
| echo 'except Exception as e:' >> fix_imports.sh && \ | |
| echo ' print(\"导入models.schemas失败:\", e)' >> fix_imports.sh && \ | |
| echo '"' >> fix_imports.sh && \ | |
| chmod +x fix_imports.sh | |
| # 运行修复脚本 | |
| RUN ./fix_imports.sh | |
| # 设置Python环境 | |
| ENV PYTHONPATH=/app | |
| ENV PYTHONDONTWRITEBYTECODE=1 | |
| ENV PYTHONUNBUFFERED=1 | |
| # 安装Python依赖 | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| # 配置NLTK和ChromaDB | |
| ENV NLTK_DATA=/usr/local/share/nltk_data | |
| RUN mkdir -p $NLTK_DATA && \ | |
| python -m nltk.downloader -d $NLTK_DATA punkt | |
| ENV ANONYMIZED_TELEMETRY=False | |
| # 创建必要目录 | |
| RUN mkdir -p uploads data/vector_db | |
| # 创建用户 | |
| RUN useradd --create-home --shell /bin/bash appuser && \ | |
| chown -R appuser:appuser /app | |
| USER appuser | |
| EXPOSE 7860 | |
| # 启动时先诊断再启动 | |
| CMD ["bash", "-c", "./diagnose.sh && ./fix_imports.sh && echo '=== 尝试启动应用 ===' && gunicorn --workers 1 --bind 0.0.0.0:7860 --pythonpath /app app:app"] |