#!/bin/bash # PANJIT 文件翻譯系統 - 一鍵部署腳本 # 版本: 2.0.0 # 日期: 2025-09-04 set -e echo "🚀 PANJIT 文件翻譯系統部署腳本" echo "=================================" # 檢查 Docker 環境 echo "📋 檢查 Docker 環境..." if ! command -v docker &> /dev/null; then echo "❌ Docker 未安裝,請先安裝 Docker" exit 1 fi if ! command -v docker-compose &> /dev/null; then echo "❌ Docker Compose 未安裝,請先安裝 Docker Compose" exit 1 fi echo "✅ Docker 環境檢查完成" # 檢查端口 echo "📋 檢查端口 12010..." if lsof -Pi :12010 -sTCP:LISTEN -t >/dev/null; then echo "⚠️ 端口 12010 已被占用" echo "請停止占用端口的服務或修改配置中的端口號" echo "當前占用進程:" lsof -Pi :12010 -sTCP:LISTEN read -p "是否繼續部署?(y/N): " -n 1 -r echo if [[ ! $REPLY =~ ^[Yy]$ ]]; then exit 1 fi else echo "✅ 端口 12010 可用" fi # 創建必要目錄 echo "📁 創建必要目錄..." mkdir -p uploads cache logs chmod 755 uploads cache logs echo "✅ 目錄創建完成" # 停止舊服務 echo "🛑 停止現有服務..." docker-compose down 2>/dev/null || true # 建置映像 echo "🏗️ 建置 Docker 映像..." docker-compose build # 啟動服務 echo "🚀 啟動服務..." docker-compose up -d # 等待服務啟動 echo "⏳ 等待服務啟動..." sleep 30 # 健康檢查 echo "🔍 檢查服務狀態..." if curl -f http://localhost:12010/api/v1/health >/dev/null 2>&1; then echo "✅ 主應用服務正常" else echo "❌ 主應用服務異常" echo "查看日誌:" docker-compose logs app exit 1 fi # 檢查 Celery Worker echo "🔍 檢查 Celery Worker..." if docker-compose exec -T celery-worker celery -A app.celery inspect ping >/dev/null 2>&1; then echo "✅ Celery Worker 正常" else echo "⚠️ Celery Worker 可能異常,請檢查日誌" fi # 顯示服務狀態 echo "" echo "📊 服務狀態:" docker-compose ps echo "" echo "🎉 部署完成!" echo "=================================" echo "📱 系統訪問地址: http://localhost:12010" echo "🔧 API 文檔: http://localhost:12010/api" echo "❤️ 健康檢查: http://localhost:12010/api/v1/health" echo "" echo "📋 管理命令:" echo " 查看日誌: docker-compose logs -f" echo " 停止服務: docker-compose down" echo " 重啟服務: docker-compose restart" echo " 服務狀態: docker-compose ps" echo "" echo "📞 技術支援: it-support@panjit.com.tw" echo "================================="