88 lines
2.2 KiB
Bash
Executable File
88 lines
2.2 KiB
Bash
Executable File
#!/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
|