#!/bin/bash # Nacos配置中心设置脚本 # 为所有微服务创建Nacos配置 set -e echo "开始设置Nacos配置中心..." # Nacos服务器地址 NACOS_SERVER="localhost:8848" NACOS_NAMESPACE="public" NACOS_GROUP="DEFAULT_GROUP" # 服务列表 SERVICES=( "user-service" "product-service" "order-service" "inventory-service" "finance-service" "admin-service" "file-service" "notification-service" "tenant-service" "permission-service" ) # 创建共享配置 echo "创建共享配置..." # 1. 公共配置 cat > /tmp/common-config.yaml << 'EOF' spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: Asia/Shanghai serialization: write-dates-as-timestamps: false http: encoding: charset: UTF-8 enabled: true management: endpoints: web: exposure: include: health,info,metrics endpoint: health: show-details: always logging: pattern: console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" level: root: INFO com.erp: DEBUG EOF # 2. 数据源配置 cat > /tmp/datasource-config.yaml << 'EOF' spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://${MYSQL_HOST:localhost}:3306/${DB_NAME}?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: ${DB_USER:erp_user} password: ${DB_PASSWORD:erp123456} hikari: connection-timeout: 30000 maximum-pool-size: 20 minimum-idle: 5 connection-test-query: SELECT 1 EOF # 3. Redis配置 cat > /tmp/redis-config.yaml << 'EOF' spring: redis: host: ${REDIS_HOST:localhost} port: ${REDIS_PORT:6379} password: ${REDIS_PASSWORD:} database: 0 timeout: 3000ms lettuce: pool: max-active: 20 max-idle: 10 min-idle: 5 EOF # 上传共享配置到Nacos echo "上传共享配置到Nacos..." # 这里需要Nacos API调用,实际使用时需要安装nacos-client或使用curl # 为每个服务创建配置 echo "为每个服务创建配置..." for SERVICE in "${SERVICES[@]}"; do echo "创建服务配置: $SERVICE" # 服务特定配置 cat > /tmp/${SERVICE}-config.yaml << EOF # ${SERVICE} 服务配置 server: port: \${SERVER_PORT:8080} spring: application: name: ${SERVICE} # 服务特定配置 ${SERVICE}: enabled: true version: 1.0.0 # 业务配置 service: name: ${SERVICE} description: ${SERVICE} 微服务 version: 1.0.0 # 监控配置 management: endpoints: web: exposure: include: health,info,metrics,prometheus metrics: export: prometheus: enabled: true tags: application: ${SERVICE} environment: \${ENV:dev} EOF echo " - 已创建 ${SERVICE}-config.yaml" done # 创建Nacos配置导入脚本 cat > /tmp/import-nacos-config.sh << 'EOF' #!/bin/bash # Nacos配置导入脚本 # 需要先启动Nacos服务 NACOS_SERVER="localhost:8848" NACOS_USER="nacos" NACOS_PASSWORD="nacos" # 导入共享配置 echo "导入共享配置..." curl -X POST "http://${NACOS_SERVER}/nacos/v1/cs/configs" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "dataId=common-config.yaml&group=DEFAULT_GROUP&content=$(cat /tmp/common-config.yaml | jq -Rs . | sed 's/"/\\"/g')&type=yaml" curl -X POST "http://${NACOS_SERVER}/nacos/v1/cs/configs" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "dataId=datasource-config.yaml&group=DEFAULT_GROUP&content=$(cat /tmp/datasource-config.yaml | jq -Rs . | sed 's/"/\\"/g')&type=yaml" curl -X POST "http://${NACOS_SERVER}/nacos/v1/cs/configs" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "dataId=redis-config.yaml&group=DEFAULT_GROUP&content=$(cat /tmp/redis-config.yaml | jq -Rs . | sed 's/"/\\"/g')&type=yaml" # 导入服务配置 for SERVICE in user-service product-service order-service inventory-service finance-service admin-service file-service notification-service tenant-service permission-service; do echo "导入服务配置: $SERVICE" curl -X POST "http://${NACOS_SERVER}/nacos/v1/cs/configs" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "dataId=${SERVICE}-config.yaml&group=DEFAULT_GROUP&content=$(cat /tmp/${SERVICE}-config.yaml | jq -Rs . | sed 's/"/\\"/g')&type=yaml" done echo "Nacos配置导入完成!" EOF chmod +x /tmp/import-nacos-config.sh echo "" echo "配置中心设置完成!" echo "" echo "下一步操作:" echo "1. 启动Nacos服务:" echo " cd /root/.openclaw/workspace/erp-java-backend/nacos" echo " docker-compose -f docker-compose.standalone.yml up -d" echo "" echo "2. 导入配置到Nacos:" echo " /tmp/import-nacos-config.sh" echo "" echo "3. 启动微服务(会自动从Nacos获取配置)" echo "" echo "配置文件位置:" echo " - 共享配置: /tmp/common-config.yaml" echo " - 数据源配置: /tmp/datasource-config.yaml" echo " - Redis配置: /tmp/redis-config.yaml" echo " - 各服务配置: /tmp/*-config.yaml" echo " - 导入脚本: /tmp/import-nacos-config.sh"