#!/bin/bash # 云端最小回调壳部署脚本 # 用途:在备案域名服务器上部署最小可用回调壳 set -e echo "=== 企业微信 AI 助手 - 最小回调壳部署 ===" echo "" # 检查环境变量 if [ -z "$DOMAIN" ]; then echo "错误: 未设置 DOMAIN 环境变量" echo "请设置: export DOMAIN=your-domain.com" exit 1 fi if [ ! -f ".env" ]; then echo "错误: 未找到 .env 文件" echo "请复制 .env.example 并填写必需变量" exit 1 fi # 检查必需的环境变量 source .env required_vars=("WECOM_TOKEN" "WECOM_ENCODING_AES_KEY" "WECOM_CORP_ID" "WECOM_AGENT_ID") for var in "${required_vars[@]}"; do if [ -z "${!var}" ]; then echo "错误: 未设置 $var 环境变量" exit 1 fi done echo "[1/5] 检查 Docker 环境..." if ! command -v docker &> /dev/null; then echo "错误: Docker 未安装" exit 1 fi if ! command -v docker-compose &> /dev/null; then echo "错误: docker-compose 未安装" exit 1 fi echo "✓ Docker 环境正常" echo "" echo "[2/5] 构建后端镜像..." docker-compose build backend echo "✓ 构建完成" echo "" echo "[3/5] 启动服务(最小回调壳:backend + nginx)..." docker-compose up -d backend nginx echo "✓ 服务已启动" echo "" echo "[4/5] 等待服务就绪..." sleep 5 # 检查健康检查 max_retries=30 retry_count=0 while [ $retry_count -lt $max_retries ]; do if curl -f -s http://localhost:8000/health > /dev/null 2>&1; then echo "✓ 后端服务健康检查通过" break fi retry_count=$((retry_count + 1)) echo "等待后端服务启动... ($retry_count/$max_retries)" sleep 2 done if [ $retry_count -eq $max_retries ]; then echo "警告: 后端服务健康检查超时" echo "请检查日志: docker-compose logs backend" fi echo "" echo "[5/5] 部署完成!" echo "" echo "=== 下一步 ===" echo "1. 配置企业微信回调 URL: https://$DOMAIN/api/wecom/callback" echo "2. Token: $WECOM_TOKEN" echo "3. EncodingAESKey: $WECOM_ENCODING_AES_KEY" echo "" echo "查看日志: docker-compose logs -f backend" echo "检查服务: docker-compose ps" echo ""