#!/bin/bash # PANJIT Document Translator V2 - 生產環境部署腳本 # Author: PANJIT IT Team # Created: 2025-01-01 set -e echo "🚀 PANJIT Document Translator V2 - 生產環境部署" echo "==================================================" # 檢查是否存在生產環境配置文件 if [ ! -f ".env.production" ]; then echo "❌ 錯誤:找不到 .env.production 文件" echo "請先複製 .env.production 並設置正確的生產環境配置" exit 1 fi # 檢查是否存在 API 配置文件 if [ ! -f "api.txt" ]; then echo "❌ 錯誤:找不到 api.txt 文件" echo "請確保 Dify API 配置文件存在" exit 1 fi echo "✅ 配置文件檢查完成" # 停止現有容器 (如果存在) echo "🔄 停止現有容器..." docker-compose -f docker-compose.prod.yml down --remove-orphans # 清理舊映像 (可選) read -p "是否清理舊的 Docker 映像? (y/N): " clean_images if [[ $clean_images =~ ^[Yy]$ ]]; then echo "🧹 清理舊映像..." docker system prune -f docker image prune -f fi # 構建新映像 echo "🔨 構建生產環境映像..." docker-compose -f docker-compose.prod.yml build --no-cache # 創建必要的目錄 echo "📁 創建必要的目錄..." mkdir -p uploads cache logs # 設置權限 chmod 755 uploads cache logs # 啟動服務 echo "🚀 啟動生產環境服務..." docker-compose -f docker-compose.prod.yml up -d # 等待資料庫服務啟動 echo "⏳ 等待資料庫服務啟動..." sleep 10 # 執行認證系統資料庫初始化 (新架構) echo "📊 執行認證系統資料庫初始化..." docker-compose -f docker-compose.prod.yml exec -T app python run_create_schema.py # 等待服務啟動 echo "⏳ 等待服務啟動..." sleep 30 # 檢查服務狀態 echo "🔍 檢查服務狀態..." docker-compose -f docker-compose.prod.yml ps # 檢查健康狀態 echo "🏥 檢查應用健康狀態..." max_attempts=10 attempt=1 while [ $attempt -le $max_attempts ]; do if curl -s http://localhost:12010/api/health | grep -q "healthy"; then echo "✅ 應用程式啟動成功!" break else echo "⏳ 等待應用程式啟動... (嘗試 $attempt/$max_attempts)" sleep 10 ((attempt++)) fi done if [ $attempt -gt $max_attempts ]; then echo "❌ 應用程式啟動失敗" echo "請檢查日誌:" docker-compose -f docker-compose.prod.yml logs app exit 1 fi echo "" echo "🎉 生產環境部署完成!" echo "==================================================" echo "📊 服務狀態:" docker-compose -f docker-compose.prod.yml ps echo "" echo "🌐 應用程式訪問地址:http://localhost:12010" echo "🔧 API 健康檢查:http://localhost:12010/api/health" echo "" echo "📝 日誌查看命令:" echo " - 應用程式日誌:docker-compose -f docker-compose.prod.yml logs -f app" echo " - Worker 日誌:docker-compose -f docker-compose.prod.yml logs -f celery-worker" echo " - Nginx 日誌:docker-compose -f docker-compose.prod.yml logs -f nginx" echo "" echo "🛑 停止服務命令:docker-compose -f docker-compose.prod.yml down" echo "" echo "✅ 部署完成!系統已準備好在生產環境中運行。"