8th_fix docker
This commit is contained in:
93
deploy.sh
Normal file
93
deploy.sh
Normal file
@@ -0,0 +1,93 @@
|
||||
#!/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 ""
|
Reference in New Issue
Block a user