#!/bin/bash # ============================================================================= # 智能IT支持服务台 — NAS 一键部署脚本 # ============================================================================= # 用法: # 1. 先编辑 .env 文件,填入 CF_TUNNEL_TOKEN 和修改 POSTGRES_PASSWORD # 2. 确保文件已上传到 /volume1/docker/wecom-it-desk/ # 3. SSH 登录 NAS 后执行: # cd /volume1/docker/wecom-it-desk # bash deploy.sh # ============================================================================= set -e # 遇到错误立即停止 DEPLOY_DIR="/volume1/docker/wecom-it-desk" echo "============================================" echo " 智能IT支持服务台 — NAS 部署" echo "============================================" echo "" # --- 步骤 1:检查 .env --- if [ ! -f "$DEPLOY_DIR/.env" ]; then echo "❌ 未找到 .env 文件!" echo " 请先执行:cp .env.nas .env" echo " 然后编辑 .env,填入 CF_TUNNEL_TOKEN 和修改 POSTGRES_PASSWORD" exit 1 fi # 检查 Token 是否还是占位符 if grep -q "YOUR_TUNNEL_TOKEN_HERE" "$DEPLOY_DIR/.env"; then echo "❌ .env 中的 CF_TUNNEL_TOKEN 还是占位符!" echo " 请编辑 .env,将 YOUR_TUNNEL_TOKEN_HERE 替换为实际的 Tunnel Token" exit 1 fi echo "✅ .env 文件检查通过" # --- 步骤 2:检查关键目录 --- for dir in backend frontend-h5/dist frontend-agent/dist nginx; do if [ ! -d "$DEPLOY_DIR/$dir" ]; then echo "❌ 缺少目录:$dir" exit 1 fi done echo "✅ 目录结构检查通过" # --- 步骤 3:构建后端 Docker 镜像 --- echo "" echo ">>> 正在构建后端 Docker 镜像..." docker compose -f docker-compose.nas.yml build backend echo "✅ 后端镜像构建完成" # --- 步骤 4:启动所有服务 --- echo "" echo ">>> 正在启动所有服务..." docker compose -f docker-compose.nas.yml up -d echo "✅ 服务启动命令已执行" # --- 步骤 5:等待服务健康 --- echo "" echo ">>> 等待服务启动(约 30 秒)..." sleep 30 # --- 步骤 6:健康检查 --- echo "" echo ">>> 执行健康检查..." # 检查容器状态 echo "" echo "--- 容器状态 ---" docker compose -f docker-compose.nas.yml ps # 检查后端 API echo "" echo "--- 后端 API 健康检查 ---" HEALTH=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:18080/api/health 2>/dev/null || echo "000") if [ "$HEALTH" = "200" ]; then echo "✅ 后端 API 正常 (HTTP $HEALTH)" else echo "⚠️ 后端 API 返回 HTTP $HEALTH,可能需要等待更长时间" echo " 查看日志:docker compose -f docker-compose.nas.yml logs backend" fi # 检查 H5 前端 echo "" echo "--- H5 前端健康检查 ---" H5=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:18080/itdesk/ 2>/dev/null || echo "000") if [ "$H5" = "200" ]; then echo "✅ H5 前端正常 (HTTP $H5)" else echo "⚠️ H5 前端返回 HTTP $H5" fi # 检查坐席工作台 echo "" echo "--- 坐席工作台健康检查 ---" AGENT=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:18080/itagent/ 2>/dev/null || echo "000") if [ "$AGENT" = "200" ]; then echo "✅ 坐席工作台正常 (HTTP $AGENT)" else echo "⚠️ 坐席工作台返回 HTTP $AGENT" fi echo "" echo "============================================" echo " 部署完成!" echo "============================================" echo "" echo " 📱 H5 员工端: https://itdesk.amanzac.com/itdesk/" echo " 💻 坐席工作台: https://itdesk.amanzac.com/itagent/" echo " 🔧 内网调试: http://192.168.3.200:18080/itdesk/" echo "" echo " 查看日志:" echo " docker compose -f docker-compose.nas.yml logs -f" echo "" echo " 停止服务:" echo " docker compose -f docker-compose.nas.yml down" echo ""