改用API驗證
This commit is contained in:
110
deploy-production.sh
Normal file
110
deploy-production.sh
Normal file
@@ -0,0 +1,110 @@
|
||||
#!/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 "✅ 部署完成!系統已準備好在生產環境中運行。"
|
Reference in New Issue
Block a user