deploy.sh 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #!/bin/bash
  2. # LangGraph 部署脚本
  3. # 用法: ./deploy.sh [生产|测试]
  4. # 会将本地 cfc-langgraph/ 代码同步到远程服务器并重启服务
  5. #
  6. # 远程服务器: ai.etotem.com.cn (111.228.6.214)
  7. # 部署路径: /opt/sc-data/cfc/cfc-langgraph/
  8. set -e
  9. ENV="${1:-prod}"
  10. REMOTE_USER="root"
  11. REMOTE_HOST="111.228.6.214"
  12. REMOTE_PATH="/opt/sc-data/cfc/cfc-langgraph"
  13. SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
  14. echo "=== LangGraph Deploy ($ENV) ==="
  15. echo "本地: $SCRIPT_DIR"
  16. echo "远程: $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH"
  17. # 同步代码(排除虚拟环境和缓存)
  18. echo "[1/3] 同步代码..."
  19. rsync -av --delete \
  20. --exclude='.venv' \
  21. --exclude='__pycache__' \
  22. --exclude='*.pyc' \
  23. --exclude='.env' \
  24. --exclude='.env.production' \
  25. --exclude='data/' \
  26. --exclude='node_modules' \
  27. --exclude='.git/' \
  28. "$SCRIPT_DIR/" \
  29. "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}/"
  30. # 重启服务
  31. echo "[2/3] 重启 LangGraph 服务..."
  32. ssh "${REMOTE_USER}@${REMOTE_HOST}" "
  33. cd ${REMOTE_PATH} && \
  34. docker-compose restart langgraph-svc && \
  35. sleep 3 && \
  36. docker-compose ps langgraph-svc
  37. "
  38. # 健康检查
  39. echo "[3/3] 健康检查..."
  40. sleep 5
  41. if curl -sf "https://ai.etotem.com.cn/health" > /dev/null; then
  42. echo "✅ 部署成功!服务地址: https://ai.etotem.com.cn"
  43. curl -s "https://ai.etotem.com.cn/api/v1/health" | python3 -m json.tool 2>/dev/null || true
  44. else
  45. echo "❌ 健康检查失败,请查看日志: ssh ${REMOTE_USER}@${REMOTE_HOST} 'docker-compose -f ${REMOTE_PATH}/docker-compose.yml logs langgraph-svc --tail=50'"
  46. exit 1
  47. fi