#!/bin/bash # ============================================================================ # 批量更新所有微服务的Nacos配置 # 为每个服务创建本地、测试、生产环境的配置文件 # ============================================================================ # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color echo -e "${BLUE}===========================================${NC}" echo -e "${BLUE}批量更新微服务Nacos配置${NC}" echo -e "${BLUE}===========================================${NC}" # 服务配置 SERVICES="emotion-user:19001 emotion-ai:19002 emotion-record:19003 emotion-growth:19004 emotion-explore:19005 emotion-reward:19006 emotion-websocket:19007 emotion-stats:19008" # 生成本地环境配置 generate_local_config() { local service_name=$1 local port=$2 cat > "backend/${service_name}/src/main/resources/application-local.yml" << EOF # 本地开发环境配置 spring: cloud: nacos: discovery: server-addr: localhost:8848 namespace: group: DEFAULT_GROUP enabled: true username: nacos password: nacos metadata: version: 1.0.0 zone: local register-enabled: true ephemeral: true cluster-name: DEFAULT service: \${spring.application.name} weight: 1 heart-beat-interval: 5000 heart-beat-timeout: 15000 ip-delete-timeout: 30000 config: server-addr: localhost:8848 namespace: group: DEFAULT_GROUP file-extension: yml enabled: false username: nacos password: nacos # 数据源配置 datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/emotion_museum?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true username: root password: 123456 # Redis配置 data: redis: host: localhost port: 6379 password: database: 0 # 日志配置 logging: level: com.emotionmuseum: debug com.baomidou.mybatisplus: debug com.alibaba.nacos: info file: name: logs/${service_name}-local.log EOF } # 生成测试环境配置 generate_test_config() { local service_name=$1 local port=$2 cat > "backend/${service_name}/src/main/resources/application-test.yml" << EOF # 测试环境配置 spring: cloud: nacos: discovery: server-addr: 47.111.10.27:8848 namespace: test group: DEFAULT_GROUP enabled: true username: nacos password: nacos metadata: version: 1.0.0 zone: test register-enabled: true ephemeral: true cluster-name: DEFAULT service: \${spring.application.name} weight: 1 heart-beat-interval: 5000 heart-beat-timeout: 15000 ip-delete-timeout: 30000 config: server-addr: 47.111.10.27:8848 namespace: test group: DEFAULT_GROUP file-extension: yml enabled: false username: nacos password: nacos # 数据源配置 datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://47.111.10.27:3306/emotion_museum?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true username: root password: EmotionMuseum2025*# # Redis配置 data: redis: host: 47.111.10.27 port: 6379 password: EmotionMuseum2025*# database: 0 # 日志配置 logging: level: com.emotionmuseum: info com.baomidou.mybatisplus: info com.alibaba.nacos: warn file: name: logs/${service_name}-test.log EOF } # 生成生产环境配置 generate_prod_config() { local service_name=$1 local port=$2 cat > "backend/${service_name}/src/main/resources/application-prod.yml" << EOF # 生产环境配置 spring: cloud: nacos: discovery: server-addr: 47.111.10.27:8848 namespace: prod group: DEFAULT_GROUP enabled: true username: nacos password: nacos metadata: version: 1.0.0 zone: prod register-enabled: true ephemeral: true cluster-name: DEFAULT service: \${spring.application.name} weight: 1 heart-beat-interval: 5000 heart-beat-timeout: 15000 ip-delete-timeout: 30000 config: server-addr: 47.111.10.27:8848 namespace: prod group: DEFAULT_GROUP file-extension: yml enabled: false username: nacos password: nacos # 数据源配置 datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://47.111.10.27:3306/emotion_museum?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true username: root password: EmotionMuseum2025*# # Redis配置 data: redis: host: 47.111.10.27 port: 6379 password: EmotionMuseum2025*# database: 0 # 日志配置 logging: level: com.emotionmuseum: warn com.baomidou.mybatisplus: warn com.alibaba.nacos: error file: name: logs/${service_name}-prod.log EOF } # 处理每个服务 for service_info in $SERVICES; do service_name=$(echo $service_info | cut -d: -f1) port=$(echo $service_info | cut -d: -f2) echo -e "${YELLOW}处理服务: $service_name (端口: $port)${NC}" # 检查服务目录是否存在 if [ ! -d "backend/$service_name" ]; then echo -e "${RED}❌ 服务目录不存在: backend/$service_name${NC}" continue fi # 创建resources目录(如果不存在) mkdir -p "backend/$service_name/src/main/resources" # 生成配置文件 echo " 生成本地环境配置..." generate_local_config "$service_name" "$port" echo " 生成测试环境配置..." generate_test_config "$service_name" "$port" echo " 生成生产环境配置..." generate_prod_config "$service_name" "$port" echo -e "${GREEN}✅ $service_name 配置文件生成完成${NC}" done echo "" echo -e "${BLUE}===========================================${NC}" echo -e "${GREEN}✅ 所有服务的Nacos配置更新完成!${NC}" echo -e "${BLUE}===========================================${NC}" echo "" echo -e "${YELLOW}配置说明:${NC}" echo -e "1. 本地环境: localhost:8848, 无命名空间" echo -e "2. 测试环境: 47.111.10.27:8848, test命名空间" echo -e "3. 生产环境: 47.111.10.27:8848, prod命名空间" echo "" echo -e "${YELLOW}使用方法:${NC}" echo -e "启动时指定环境: ${GREEN}--spring.profiles.active=local|test|prod${NC}"