將 Tool_OCR 從 macOS conda 環境轉換為 Docker 單容器部署方案。 前後端整合於同一容器,通過 Nginx 反向代理,僅對外暴露單一端口。 ## 新增功能 - Docker 單容器架構(Frontend + Backend + Nginx) - 多階段構建優化鏡像大小 - Supervisor 進程管理 - 健康檢查機制 - 完整部署文檔 ## 技術細節 - 對外端口:12015(原 12010 已被佔用) - 內部架構:Nginx(12015) → FastAPI(8000) - 前端靜態文件由 Nginx 直接服務 - API 請求通過 Nginx 反向代理 ## 系統依賴完善 - libmagic1:文件類型檢測 - LibreOffice:Office 文檔轉換 - paddlex[ocr]:PP-StructureV3 版面分析 - 中日韓字體支援 ## 配置調整 - 環境變數路徑:macOS 路徑 → 容器絕對路徑 - 前端 API URL:修正為統一端口 12015 - Pip 安裝:延長超時至 600 秒,重試 5 次 - CRLF 轉換:自動處理 Windows 換行符 ## 清理 - 移除臨時文檔(API_FIX_SUMMARY.md 等 7 個文檔) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
42 lines
1.2 KiB
Bash
42 lines
1.2 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
echo "========================================"
|
|
echo "Tool_OCR Container Starting..."
|
|
echo "========================================"
|
|
|
|
# Wait a moment for system to stabilize
|
|
sleep 2
|
|
|
|
# Run database migrations if needed
|
|
echo "Checking database migrations..."
|
|
cd /app/backend
|
|
if [ -f "alembic.ini" ]; then
|
|
echo "Running Alembic migrations..."
|
|
alembic upgrade head || echo "Warning: Migration failed or already up to date"
|
|
fi
|
|
|
|
# Create necessary directories if they don't exist
|
|
echo "Ensuring directories exist..."
|
|
mkdir -p \
|
|
/app/backend/uploads/temp \
|
|
/app/backend/uploads/processed \
|
|
/app/backend/uploads/images \
|
|
/app/backend/storage/markdown \
|
|
/app/backend/storage/json \
|
|
/app/backend/storage/exports \
|
|
/app/backend/models/paddleocr \
|
|
/app/backend/logs
|
|
|
|
# Set permissions
|
|
chmod -R 755 /app/backend/uploads /app/backend/storage /app/backend/logs
|
|
|
|
echo "========================================"
|
|
echo "Starting services with Supervisor..."
|
|
echo "- Nginx listening on port 12015"
|
|
echo "- Backend API on internal port 8000"
|
|
echo "========================================"
|
|
|
|
# Start supervisord
|
|
exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf
|