diff --git a/deploy.sh b/deploy.sh new file mode 100755 index 0000000..7283085 --- /dev/null +++ b/deploy.sh @@ -0,0 +1,80 @@ +#!/bin/bash +# InsightFlow Phase 3 部署脚本 + +set -e + +echo "🚀 InsightFlow Phase 3 部署脚本" +echo "================================" + +# 检查环境 +if ! command -v docker &> /dev/null; then + echo "❌ Docker 未安装,请先安装 Docker" + exit 1 +fi + +if ! command -v git &> /dev/null; then + echo "❌ Git 未安装,请先安装 Git" + exit 1 +fi + +# 配置 +IMAGE_NAME="insightflow" +IMAGE_TAG="phase3" +CONTAINER_NAME="insightflow-app" +PORT="18000" +DATA_DIR="/opt/data/insightflow" + +# 检查环境变量 +if [ -z "$KIMI_API_KEY" ]; then + echo "⚠️ 警告: KIMI_API_KEY 未设置" +fi + +if [ -z "$ALIYUN_ACCESS_KEY_ID" ]; then + echo "⚠️ 警告: ALIYUN_ACCESS_KEY_ID 未设置" +fi + +if [ -z "$ALIYUN_ACCESS_KEY_SECRET" ]; then + echo "⚠️ 警告: ALIYUN_ACCESS_KEY_SECRET 未设置" +fi + +echo "" +echo "📦 构建 Docker 镜像..." +docker build -t ${IMAGE_NAME}:${IMAGE_TAG} . + +echo "" +echo "🛑 停止旧容器..." +docker stop ${CONTAINER_NAME} 2>/dev/null || true +docker rm ${CONTAINER_NAME} 2>/dev/null || true + +echo "" +echo "📁 创建数据目录..." +mkdir -p ${DATA_DIR} + +echo "" +echo "🚀 启动新容器..." +docker run -d \ + --name ${CONTAINER_NAME} \ + -p ${PORT}:8000 \ + -v ${DATA_DIR}:/app/data \ + -e KIMI_API_KEY="${KIMI_API_KEY}" \ + -e KIMI_BASE_URL="${KIMI_BASE_URL:-https://api.kimi.com/coding}" \ + -e ALIYUN_ACCESS_KEY_ID="${ALIYUN_ACCESS_KEY_ID}" \ + -e ALIYUN_ACCESS_KEY_SECRET="${ALIYUN_ACCESS_KEY_SECRET}" \ + -e DB_PATH="/app/data/insightflow.db" \ + --restart unless-stopped \ + ${IMAGE_NAME}:${IMAGE_TAG} + +echo "" +echo "⏳ 等待服务启动..." +sleep 3 + +echo "" +echo "✅ 部署完成!" +echo "" +echo "📊 服务状态:" +docker ps --filter "name=${CONTAINER_NAME}" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" + +echo "" +echo "🔗 访问地址: http://localhost:${PORT}" +echo "📋 查看日志: docker logs -f ${CONTAINER_NAME}" +echo ""