102 lines
2.5 KiB
Bash
102 lines
2.5 KiB
Bash
#!/bin/bash
|
|
|
|
# 暫時規範管理系統 V4 - 生產環境啟動腳本
|
|
# 使用方式: ./start-production.sh
|
|
|
|
set -e
|
|
|
|
echo "🚀 暫時規範管理系統 V4 - 生產環境部署"
|
|
echo "=================================================="
|
|
|
|
# 檢查必要檔案
|
|
echo "📋 檢查必要檔案..."
|
|
if [ ! -f ".env" ]; then
|
|
echo "❌ 錯誤: .env 檔案不存在"
|
|
echo "請複製 .env.production 為 .env 並配置相應的值"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f "docker-compose.yml" ]; then
|
|
echo "❌ 錯誤: docker-compose.yml 檔案不存在"
|
|
exit 1
|
|
fi
|
|
|
|
# 檢查 Docker 是否運行
|
|
echo "🐳 檢查 Docker 服務..."
|
|
if ! docker info > /dev/null 2>&1; then
|
|
echo "❌ 錯誤: Docker 服務未運行"
|
|
echo "請啟動 Docker 服務後再試"
|
|
exit 1
|
|
fi
|
|
|
|
# 停止舊的容器(如果存在)
|
|
echo "🛑 停止現有容器..."
|
|
docker-compose down || true
|
|
|
|
# 建構新的映像
|
|
echo "🔨 建構應用程式映像..."
|
|
docker-compose build --no-cache
|
|
|
|
# 啟動服務(生產環境配置)
|
|
echo "🌟 啟動生產環境服務..."
|
|
if [ -f "docker-compose.prod.yml" ]; then
|
|
echo "使用生產環境配置檔案..."
|
|
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
|
|
else
|
|
echo "使用標準配置啟動..."
|
|
docker-compose --profile production up -d
|
|
fi
|
|
|
|
# 等待服務啟動
|
|
echo "⏳ 等待服務啟動..."
|
|
sleep 10
|
|
|
|
# 檢查服務狀態
|
|
echo "📊 檢查服務狀態..."
|
|
docker-compose ps
|
|
|
|
# 顯示服務 URL
|
|
echo ""
|
|
echo "✅ 部署完成!"
|
|
echo "=================================================="
|
|
echo "📍 服務存取點:"
|
|
echo " 主應用程式: http://localhost:12010"
|
|
echo " OnlyOffice: http://localhost:12011"
|
|
echo ""
|
|
echo "📊 管理命令:"
|
|
echo " 查看日誌: docker-compose logs -f"
|
|
echo " 停止服務: docker-compose down"
|
|
echo " 重啟服務: docker-compose restart"
|
|
echo ""
|
|
echo "🔧 監控命令:"
|
|
echo " 查看容器狀態: docker-compose ps"
|
|
echo " 查看資源使用: docker stats"
|
|
echo ""
|
|
|
|
# 檢查健康狀態
|
|
echo "🏥 健康檢查..."
|
|
sleep 5
|
|
|
|
# 檢查 Redis
|
|
if docker-compose exec -T redis redis-cli ping > /dev/null 2>&1; then
|
|
echo "✅ Redis: 健康"
|
|
else
|
|
echo "❌ Redis: 異常"
|
|
fi
|
|
|
|
# 檢查應用程式
|
|
if curl -f http://localhost:12010/ > /dev/null 2>&1; then
|
|
echo "✅ 應用程式: 健康"
|
|
else
|
|
echo "❌ 應用程式: 異常"
|
|
fi
|
|
|
|
# 檢查 OnlyOffice
|
|
if curl -f http://localhost:12011/healthcheck > /dev/null 2>&1; then
|
|
echo "✅ OnlyOffice: 健康"
|
|
else
|
|
echo "❌ OnlyOffice: 異常"
|
|
fi
|
|
|
|
echo ""
|
|
echo "🎉 生產環境啟動完成!" |