start-infrastructure.sh 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #!/bin/bash
  2. # 物联网基站基础服务启动脚本
  3. set -e
  4. echo "=== 启动物联网基站基础服务 ==="
  5. # 检查Docker是否运行
  6. if ! docker info > /dev/null 2>&1; then
  7. echo "错误: Docker未运行,请先启动Docker"
  8. exit 1
  9. fi
  10. # 检查Docker Compose是否安装
  11. if ! command -v docker-compose &> /dev/null; then
  12. echo "错误: Docker Compose未安装,请先安装Docker Compose"
  13. exit 1
  14. fi
  15. # 检查Redis是否已运行
  16. REDIS_RUNNING=false
  17. if docker ps --format "table {{.Names}}" | grep -q "redis"; then
  18. echo "✓ 检测到Redis容器已运行"
  19. REDIS_RUNNING=true
  20. elif redis-cli ping > /dev/null 2>&1; then
  21. echo "✓ 检测到本地Redis服务已运行"
  22. REDIS_RUNNING=true
  23. else
  24. echo "! Redis服务未运行,将启动Docker中的Redis"
  25. fi
  26. # 启动服务
  27. if [ "$REDIS_RUNNING" = true ]; then
  28. echo "启动除Redis外的服务..."
  29. docker-compose -f docker-compose-without-redis.yml up -d
  30. else
  31. echo "启动所有服务..."
  32. docker-compose up -d
  33. fi
  34. # 等待服务启动
  35. echo "等待服务启动..."
  36. sleep 15
  37. # 检查服务状态
  38. echo "检查服务状态..."
  39. docker-compose ps
  40. # 初始化数据库
  41. echo "初始化数据库..."
  42. if docker-compose exec -T postgres pg_isready -U postgres > /dev/null 2>&1; then
  43. docker-compose exec -T postgres psql -U postgres -c "CREATE DATABASE iot_base_station;" || echo "数据库可能已存在"
  44. # 运行数据库迁移
  45. echo "运行数据库迁移..."
  46. go run cmd/migrate/main.go up
  47. else
  48. echo "警告: PostgreSQL未就绪,请手动运行迁移"
  49. fi
  50. # 显示服务信息
  51. echo ""
  52. echo "=== 服务信息 ==="
  53. echo "PostgreSQL: localhost:5432"
  54. echo "InfluxDB: http://localhost:8086"
  55. echo "Redis: localhost:6379"
  56. echo "NATS: localhost:4222"
  57. echo "MQTT: localhost:1883"
  58. echo "Grafana: http://localhost:3000 (admin/admin)"
  59. echo "Prometheus: http://localhost:9090"
  60. # 显示下一步操作
  61. echo ""
  62. echo "=== 下一步操作 ==="
  63. echo "1. 启动主服务器: go run cmd/server/main.go"
  64. echo "2. 启动数据网关: go run cmd/gateway/main.go"
  65. echo "3. 启动监控服务: go run cmd/monitor/main.go"
  66. echo "4. 运行设备模拟器: go run simulations/main.go"
  67. echo ""
  68. echo "或者使用热重载: air -c .air.toml"
  69. echo ""
  70. echo "测试API: curl -X GET http://localhost:8080/health"
  71. echo ""