From d3aa8e5fee9ffb1c8ea97597b4fedc6835e27375 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 24 Jan 2026 21:49:29 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=20Dockerfile=20?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E8=BC=B8=E5=87=BA=E6=A0=BC=E5=BC=8F=EF=BC=8C?= =?UTF-8?q?=E7=B5=B1=E4=B8=80=E7=B8=AE=E6=8E=92=E4=BB=A5=E6=8F=90=E9=AB=98?= =?UTF-8?q?=E5=8F=AF=E8=AE=80=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 90 +++++++++++++++++++++++++++--------------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4cb354a..8e7f60d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -584,10 +584,10 @@ RUN set -eu && \ \ echo "🔹 PDFMathTranslate/BabelDOC ONNX 模型:" && \ if [ -f "/root/.cache/babeldoc/models/doclayout_yolo_docstructbench_imgsz1024.onnx" ]; then \ - echo " ✅ DocLayout-YOLO ONNX 模型存在:" && \ - ls -lh /root/.cache/babeldoc/models/*.onnx 2>/dev/null || true; \ + echo " ✅ DocLayout-YOLO ONNX 模型存在:" && \ + ls -lh /root/.cache/babeldoc/models/*.onnx 2>/dev/null || true; \ else \ - echo " ❌ /root/.cache/babeldoc/models/ 中沒有 ONNX 模型"; \ + echo " ❌ /root/.cache/babeldoc/models/ 中沒有 ONNX 模型"; \ fi && \ echo "" && \ \ @@ -597,36 +597,36 @@ RUN set -eu && \ \ echo "🔹 BabelDOC 資源:" && \ if [ -d "/root/.cache/babeldoc" ]; then \ - echo " ✅ BabelDOC 資源目錄存在" && \ - du -sh /root/.cache/babeldoc 2>/dev/null || true && \ - ls -la /root/.cache/babeldoc/ 2>/dev/null || true; \ + echo " ✅ BabelDOC 資源目錄存在" && \ + du -sh /root/.cache/babeldoc 2>/dev/null || true && \ + ls -la /root/.cache/babeldoc/ 2>/dev/null || true; \ else \ - echo " ⚠️ BabelDOC 資源目錄不存在"; \ + echo " ⚠️ BabelDOC 資源目錄不存在"; \ fi && \ echo "" && \ \ echo "🔹 MinerU 模型目錄:" && \ if [ -f /root/mineru.json ]; then \ - echo " ✅ mineru.json 存在" && \ - cat /root/mineru.json && \ - MINERU_PIPELINE_DIR=$(python3 -c "import json; f=open('/root/mineru.json'); d=json.load(f); print(d.get('models-dir',{}).get('pipeline',''))" 2>/dev/null || echo "") && \ - if [ -n "$MINERU_PIPELINE_DIR" ] && [ -d "$MINERU_PIPELINE_DIR" ]; then \ - echo " ✅ MinerU Pipeline 模型目錄存在: $MINERU_PIPELINE_DIR" && \ - du -sh "$MINERU_PIPELINE_DIR" 2>/dev/null || true; \ - else \ - echo " ⚠️ MinerU Pipeline 模型目錄不存在或未設定"; \ - fi; \ + echo " ✅ mineru.json 存在" && \ + cat /root/mineru.json && \ + MINERU_PIPELINE_DIR=$(python3 -c "import json; f=open('/root/mineru.json'); d=json.load(f); print(d.get('models-dir',{}).get('pipeline',''))" 2>/dev/null || echo "") && \ + if [ -n "$MINERU_PIPELINE_DIR" ] && [ -d "$MINERU_PIPELINE_DIR" ]; then \ + echo " ✅ MinerU Pipeline 模型目錄存在: $MINERU_PIPELINE_DIR" && \ + du -sh "$MINERU_PIPELINE_DIR" 2>/dev/null || true; \ else \ - echo " ⚠️ mineru.json 不存在"; \ + echo " ⚠️ MinerU Pipeline 模型目錄不存在或未設定"; \ + fi; \ + else \ + echo " ⚠️ mineru.json 不存在"; \ fi && \ echo "" && \ \ echo "🔹 確認 HuggingFace cache 已清除:" && \ if [ -d "/root/.cache/huggingface" ]; then \ - echo " ❌ 警告:HuggingFace cache 仍存在!" && \ - du -sh /root/.cache/huggingface 2>/dev/null || true; \ + echo " ❌ 警告:HuggingFace cache 仍存在!" && \ + du -sh /root/.cache/huggingface 2>/dev/null || true; \ else \ - echo " ✅ HuggingFace cache 已清除"; \ + echo " ✅ HuggingFace cache 已清除"; \ fi && \ echo "" && \ \ @@ -645,51 +645,51 @@ RUN set -eu && \ echo "🔍 驗證 BabelDOC ONNX 模型..." && \ ONNX_FILE="/root/.cache/babeldoc/models/doclayout_yolo_docstructbench_imgsz1024.onnx" && \ if [ -f "$ONNX_FILE" ]; then \ - ONNX_SIZE=$(stat -c%s "$ONNX_FILE" 2>/dev/null || echo "0") && \ - if [ "$ONNX_SIZE" -gt 10000000 ]; then \ - echo " ✅ ONNX 模型驗證通過 ($((ONNX_SIZE/1024/1024)) MB)"; \ - else \ - echo " ❌ ONNX 模型過小 ($ONNX_SIZE bytes)" && VALIDATION_FAILED=1; \ - fi; \ + ONNX_SIZE=$(stat -c%s "$ONNX_FILE" 2>/dev/null || echo "0") && \ + if [ "$ONNX_SIZE" -gt 10000000 ]; then \ + echo " ✅ ONNX 模型驗證通過 ($((ONNX_SIZE/1024/1024)) MB)"; \ else \ - echo " ❌ ONNX 模型不存在: $ONNX_FILE" && VALIDATION_FAILED=1; \ + echo " ❌ ONNX 模型過小 ($ONNX_SIZE bytes)" && VALIDATION_FAILED=1; \ + fi; \ + else \ + echo " ❌ ONNX 模型不存在: $ONNX_FILE" && VALIDATION_FAILED=1; \ fi && \ \ # 驗證 2: PDFMathTranslate 字型(必須存在) echo "🔍 驗證 PDFMathTranslate 字型..." && \ FONT_COUNT=$(ls /app/*.ttf 2>/dev/null | wc -l || echo "0") && \ if [ "$FONT_COUNT" -ge 5 ]; then \ - echo " ✅ 字型驗證通過 ($FONT_COUNT 個字型)"; \ + echo " ✅ 字型驗證通過 ($FONT_COUNT 個字型)"; \ else \ - echo " ❌ 字型數量不足 (預期 >= 5,實際 $FONT_COUNT)" && VALIDATION_FAILED=1; \ + echo " ❌ 字型數量不足 (預期 >= 5,實際 $FONT_COUNT)" && VALIDATION_FAILED=1; \ fi && \ \ # 驗證 3: MinerU 模型(如果 mineru 已安裝則檢查,但不強制失敗) echo "🔍 驗證 MinerU 模型..." && \ if command -v mineru >/dev/null 2>&1; then \ - if [ -f /root/mineru.json ]; then \ - MINERU_DIR=$(python3 -c "import json; f=open('/root/mineru.json'); d=json.load(f); print(d.get('models-dir',{}).get('pipeline',''))" 2>/dev/null || echo "") && \ - if [ -n "$MINERU_DIR" ] && [ -d "$MINERU_DIR" ]; then \ - MINERU_SIZE=$(du -sb "$MINERU_DIR" 2>/dev/null | cut -f1 || echo "0") && \ - echo " ✅ MinerU 模型存在 ($((MINERU_SIZE/1024/1024)) MB)"; \ - else \ - echo " ⚠️ MinerU 模型目錄不存在(ARM64 可能不支援)"; \ - fi; \ - else \ - echo " ⚠️ mineru.json 不存在(ARM64 可能不支援)"; \ - fi; \ + if [ -f /root/mineru.json ]; then \ + MINERU_DIR=$(python3 -c "import json; f=open('/root/mineru.json'); d=json.load(f); print(d.get('models-dir',{}).get('pipeline',''))" 2>/dev/null || echo "") && \ + if [ -n "$MINERU_DIR" ] && [ -d "$MINERU_DIR" ]; then \ + MINERU_SIZE=$(du -sb "$MINERU_DIR" 2>/dev/null | cut -f1 || echo "0") && \ + echo " ✅ MinerU 模型存在 ($((MINERU_SIZE/1024/1024)) MB)"; \ else \ - echo " ⚠️ MinerU 未安裝(ARM64 可能不支援)"; \ + echo " ⚠️ MinerU 模型目錄不存在(ARM64 可能不支援)"; \ + fi; \ + else \ + echo " ⚠️ mineru.json 不存在(ARM64 可能不支援)"; \ + fi; \ + else \ + echo " ⚠️ MinerU 未安裝(ARM64 可能不支援)"; \ fi && \ \ # 最終驗證結果 echo "" && \ if [ "$VALIDATION_FAILED" -eq 1 ]; then \ - echo "❌ 模型驗證失敗!Image 不應發布。" && \ - echo " 請檢查網路連接並重新 build。" && \ - exit 1; \ + echo "❌ 模型驗證失敗!Image 不應發布。" && \ + echo " 請檢查網路連接並重新 build。" && \ + exit 1; \ else \ - echo "✅ 所有必要模型驗證通過!"; \ + echo "✅ 所有必要模型驗證通過!"; \ fi && \ echo "" && \ \