Files
Document_translator/deploy-production.sh
2025-10-02 17:13:24 +08:00

110 lines
3.1 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 "✅ 部署完成!系統已準備好在生產環境中運行。"