startup.sh 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #!/bin/bash
  2. #
  3. # cfc-backend 启动脚本
  4. # 用法: ./startup.sh [dev|test|prod]
  5. # dev - 本地开发环境,使用 127.0.0.1 MySQL
  6. # test - 251 测试环境,使用 192.168.16.251 MySQL
  7. # prod - 251 生产环境,使用 192.168.16.251 MySQL
  8. #
  9. # 外部配置文件优先级高于 JAR 内置配置,
  10. # 通过 --spring.config.location 显式加载 config/ 目录下的环境配置。
  11. #
  12. set -e
  13. # ===== 配置 =====
  14. PROFILE="${1:-prod}"
  15. JAR_NAME="cfc-backend-1.0.0.jar"
  16. CONFIG_DIR="$(cd "$(dirname "$0")" && pwd)/config"
  17. # JAR 路径:与 startup.sh 同目录
  18. APP_DIR="$(cd "$(dirname "$0")" && pwd)"
  19. JAR_FILE="$APP_DIR/$JAR_NAME"
  20. # 日志文件
  21. LOG_FILE="$APP_DIR/logs/cfc-backend.log"
  22. # ===== 验证 =====
  23. if [[ ! -f "$JAR_FILE" ]]; then
  24. echo "ERROR: JAR 文件不存在: $JAR_FILE"
  25. exit 1
  26. fi
  27. if [[ ! -d "$CONFIG_DIR" ]]; then
  28. echo "ERROR: 配置目录不存在: $CONFIG_DIR"
  29. exit 1
  30. fi
  31. CONFIG_FILE="$CONFIG_DIR/application-$PROFILE.yml"
  32. if [[ ! -f "$CONFIG_FILE" ]]; then
  33. echo "ERROR: 配置文件不存在: $CONFIG_FILE"
  34. echo "可用环境: dev | test | prod"
  35. exit 1
  36. fi
  37. # ===== 日志目录 =====
  38. mkdir -p "$APP_DIR/logs"
  39. # ===== 启动 =====
  40. echo "========================================"
  41. echo " CFC Backend 启动"
  42. echo " 环境: $PROFILE"
  43. echo " 配置文件: $CONFIG_FILE"
  44. echo " JAR: $JAR_FILE"
  45. echo " 日志: $LOG_FILE"
  46. echo "========================================"
  47. # spring.config.location 末尾的 / 非常重要:表示作为目录搜索,
  48. # Spring Boot 会同时加载 application.yml 和 application-{profile}.yml。
  49. # 外部文件覆盖 JAR 内置文件,相同属性以外部文件为准。
  50. exec java -jar "$JAR_FILE" \
  51. --spring.profiles.active="$PROFILE" \
  52. --spring.config.location="$CONFIG_DIR/" \
  53. >> "$LOG_FILE" 2>&1