Files
TODO_list_system/deploy.sh
2025-09-03 18:08:40 +08:00

93 lines
2.6 KiB
Bash
Raw Permalink 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
# ===========================================
# TODO管理系統 - 生產環境部署腳本 (Linux/Mac)
# ===========================================
echo ""
echo "========================================"
echo "TODO管理系統 - 生產環境部署"
echo "========================================"
echo ""
# 檢查Docker是否運行
echo "[INFO] 檢查Docker狀態..."
if ! docker info >/dev/null 2>&1; then
echo "[ERROR] Docker未運行請啟動Docker後再執行此腳本"
exit 1
fi
echo "[SUCCESS] Docker運行正常"
# 停止現有容器
echo ""
echo "[INFO] 停止現有容器..."
docker stop todo-backend-prod todo-frontend-prod 2>/dev/null || true
docker rm todo-backend-prod todo-frontend-prod 2>/dev/null || true
# 建置Docker鏡像
echo ""
echo "[INFO] 建置Docker鏡像..."
echo "[INFO] 建置後端鏡像..."
if ! docker build -t todolist-backend:latest ./backend; then
echo "[ERROR] 後端鏡像建置失敗"
exit 1
fi
echo "[SUCCESS] 後端鏡像建置完成"
echo "[INFO] 建置前端鏡像..."
if ! docker build -t todo-frontend:latest --build-arg NEXT_PUBLIC_API_URL=http://localhost:12011 ./frontend; then
echo "[ERROR] 前端鏡像建置失敗"
exit 1
fi
echo "[SUCCESS] 前端鏡像建置完成"
# 啟動服務
echo ""
echo "[INFO] 啟動生產環境服務..."
if ! docker-compose -f docker-compose.prod.yml up -d; then
echo "[ERROR] 服務啟動失敗"
exit 1
fi
# 等待服務啟動
echo "[INFO] 等待服務啟動..."
sleep 10
# 檢查服務狀態
echo ""
echo "[INFO] 檢查服務狀態..."
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | grep todo-
# 健康檢查
echo ""
echo "[INFO] 執行健康檢查..."
echo "[INFO] 檢查後端API..."
if curl -s -f http://localhost:12011/api/health >/dev/null 2>&1; then
echo "[SUCCESS] 後端API響應正常"
else
echo "[WARNING] 後端API可能尚未完全啟動請稍後手動檢查"
fi
echo "[INFO] 檢查前端..."
if curl -s -f http://localhost:12012 >/dev/null 2>&1; then
echo "[SUCCESS] 前端響應正常"
else
echo "[WARNING] 前端可能尚未完全啟動,請稍後手動檢查"
fi
echo ""
echo "========================================"
echo "部署完成!"
echo "========================================"
echo ""
echo "服務地址:"
echo " 前端: http://localhost:12012"
echo " 後端API: http://localhost:12011"
echo ""
echo ""
echo "管理指令:"
echo " 查看日誌: docker-compose -f docker-compose.prod.yml logs -f"
echo " 停止服務: docker-compose -f docker-compose.prod.yml down"
echo " 重啟服務: docker-compose -f docker-compose.prod.yml restart"
echo ""