#!/bin/bash # AI Chat Docker 部署脚本 set -e echo "🚀 开始部署 AI Chat 应用..." # 检查Docker是否安装 if ! command -v docker &> /dev/null; then echo "❌ Docker 未安装,请先安装 Docker" exit 1 fi # 检查Docker Compose是否安装 if ! command -v docker-compose &> /dev/null; then echo "❌ Docker Compose 未安装,请先安装 Docker Compose" exit 1 fi # 检查dist目录是否存在 if [ ! -d "dist" ]; then echo "❌ dist 目录不存在,请先构建项目" echo "运行: npm run build" exit 1 fi # 创建日志目录 mkdir -p logs # 选择部署模式 echo "请选择部署模式:" echo "1) 简单模式 (端口 3000)" echo "2) 完整模式 (端口 3000)" echo "3) 带反向代理 (端口 80)" read -p "请输入选择 (1-3): " choice case $choice in 1) echo "📦 使用简单模式部署..." docker-compose -f docker-compose.simple.yml down 2>/dev/null || true docker-compose -f docker-compose.simple.yml up -d --build echo "✅ 部署完成!访问地址: http://localhost:3000" ;; 2) echo "📦 使用完整模式部署..." docker-compose down 2>/dev/null || true docker-compose up -d --build echo "✅ 部署完成!访问地址: http://localhost:3000" ;; 3) echo "📦 使用反向代理模式部署..." docker-compose --profile proxy down 2>/dev/null || true docker-compose --profile proxy up -d --build echo "✅ 部署完成!访问地址: http://localhost" ;; *) echo "❌ 无效选择" exit 1 ;; esac # 等待服务启动 echo "⏳ 等待服务启动..." sleep 5 # 检查服务状态 if [ "$choice" = "1" ]; then docker-compose -f docker-compose.simple.yml ps else docker-compose ps fi echo "" echo "🎉 部署完成!" echo "" echo "📋 常用命令:" echo " 查看日志: docker-compose logs -f" echo " 停止服务: docker-compose down" echo " 重启服务: docker-compose restart" echo "" echo "🔍 健康检查:" if curl -s http://localhost:3000 > /dev/null 2>&1 || curl -s http://localhost > /dev/null 2>&1; then echo "✅ 服务运行正常" else echo "⚠️ 服务可能还在启动中,请稍等片刻" fi