#!/bin/bash # LangGraph 部署脚本 # 用法: ./deploy.sh [生产|测试] # 会将本地 cfc-langgraph/ 代码同步到远程服务器并重启服务 # # 远程服务器: ai.etotem.com.cn (111.228.6.214) # 部署路径: /opt/sc-data/cfc/cfc-langgraph/ set -e ENV="${1:-prod}" REMOTE_USER="root" REMOTE_HOST="111.228.6.214" REMOTE_PATH="/opt/sc-data/cfc/cfc-langgraph" SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" echo "=== LangGraph Deploy ($ENV) ===" echo "本地: $SCRIPT_DIR" echo "远程: $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH" # 同步代码(排除虚拟环境和缓存) echo "[1/3] 同步代码..." rsync -av --delete \ --exclude='.venv' \ --exclude='__pycache__' \ --exclude='*.pyc' \ --exclude='.env' \ --exclude='.env.production' \ --exclude='data/' \ --exclude='node_modules' \ --exclude='.git/' \ "$SCRIPT_DIR/" \ "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}/" # 重启服务 echo "[2/3] 重启 LangGraph 服务..." ssh "${REMOTE_USER}@${REMOTE_HOST}" " cd ${REMOTE_PATH} && \ docker-compose restart langgraph-svc && \ sleep 3 && \ docker-compose ps langgraph-svc " # 健康检查 echo "[3/3] 健康检查..." sleep 5 if curl -sf "https://ai.etotem.com.cn/health" > /dev/null; then echo "✅ 部署成功!服务地址: https://ai.etotem.com.cn" curl -s "https://ai.etotem.com.cn/api/v1/health" | python3 -m json.tool 2>/dev/null || true else echo "❌ 健康检查失败,请查看日志: ssh ${REMOTE_USER}@${REMOTE_HOST} 'docker-compose -f ${REMOTE_PATH}/docker-compose.yml logs langgraph-svc --tail=50'" exit 1 fi