agricultural-sock-amalysis/start-dev.sh

102 lines
2.8 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 设置颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 设置开发环境变量
export SPRING_PROFILES_ACTIVE=dev
export ENVIRONMENT=dev
echo -e "${GREEN}启动农业股票分析平台 (开发环境)...${NC}"
# 检查端口是否被占用
check_port() {
if lsof -Pi :$1 -sTCP:LISTEN -t >/dev/null ; then
echo -e "${RED}端口 $1 已被占用,请先关闭相关服务${NC}"
return 1
fi
return 0
}
# 检查必要端口
echo -e "${YELLOW}检查端口占用情况...${NC}"
if ! check_port 3000; then exit 1; fi
if ! check_port 8080; then exit 1; fi
# 启动前端开发服务器
echo -e "${YELLOW}启动前端服务 (开发模式)...${NC}"
cd frontend
npm run dev &
FRONTEND_PID=$!
# 等待一下
sleep 3
# 启动后端服务
echo -e "${YELLOW}启动后端服务 (开发环境: ${SPRING_PROFILES_ACTIVE})...${NC}"
cd ../backend
mvn spring-boot:run -Dspring-boot.run.profiles=dev &
BACKEND_PID=$!
# 等待一下
sleep 5
# 启动数据采集服务
echo -e "${YELLOW}启动数据采集服务...${NC}"
cd ../data-collector
python stock_crawler.py &
COLLECTOR_PID=$!
# 可选启动Spark处理器开发环境
echo -e "${YELLOW}是否启动Spark数据处理器(y/n)${NC}"
read -t 10 -p "10秒后自动跳过..." SPARK_CHOICE
if [[ $SPARK_CHOICE =~ ^[Yy]$ ]]; then
echo -e "${YELLOW}启动Spark数据处理器 (开发环境)...${NC}"
cd ../spark-processor
java -Denvironment=dev -cp target/classes:target/lib/* com.agricultural.spark.StockDataProcessor &
SPARK_PID=$!
fi
echo -e "${GREEN}开发环境服务启动完成!${NC}"
echo "================================================================"
echo " 🌐 前端服务: http://localhost:3000"
echo " 🔧 后端服务: http://localhost:8080"
echo " 📚 API文档: http://localhost:8080/swagger-ui"
echo " 🏷️ 环境配置: ${SPRING_PROFILES_ACTIVE}"
echo " 📊 数据库: MySQL (localhost:3306)"
echo " 🗃️ 缓存: Redis (localhost:6379)"
echo "================================================================"
# 保存PID到文件用于停止服务
echo $FRONTEND_PID > frontend.pid
echo $BACKEND_PID > backend.pid
echo $COLLECTOR_PID > collector.pid
if [[ ! -z $SPARK_PID ]]; then
echo $SPARK_PID > spark.pid
fi
echo -e "${YELLOW}使用 ./stop-dev.sh 停止所有开发服务${NC}"
echo -e "${YELLOW}使用 Ctrl+C 或 Enter 键停止服务...${NC}"
# 设置信号处理
cleanup() {
echo -e "\n${YELLOW}正在停止所有服务...${NC}"
kill $FRONTEND_PID $BACKEND_PID $COLLECTOR_PID 2>/dev/null
if [[ ! -z $SPARK_PID ]]; then
kill $SPARK_PID 2>/dev/null
fi
# 清理PID文件
rm -f frontend.pid backend.pid collector.pid spark.pid
echo -e "${GREEN}所有服务已停止${NC}"
exit 0
}
trap cleanup SIGINT SIGTERM
# 等待用户输入或信号
wait