| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #!/bin/bash
- #
- # cfc-backend 启动脚本
- # 用法: ./startup.sh [dev|test|prod]
- # dev - 本地开发环境,使用 127.0.0.1 MySQL
- # test - 251 测试环境,使用 192.168.16.251 MySQL
- # prod - 251 生产环境,使用 192.168.16.251 MySQL
- #
- # 外部配置文件优先级高于 JAR 内置配置,
- # 通过 --spring.config.location 显式加载 config/ 目录下的环境配置。
- #
- set -e
- # ===== 配置 =====
- PROFILE="${1:-prod}"
- JAR_NAME="cfc-backend-1.0.0.jar"
- CONFIG_DIR="$(cd "$(dirname "$0")" && pwd)/config"
- # JAR 路径:与 startup.sh 同目录
- APP_DIR="$(cd "$(dirname "$0")" && pwd)"
- JAR_FILE="$APP_DIR/$JAR_NAME"
- # 日志文件
- LOG_FILE="$APP_DIR/logs/cfc-backend.log"
- # ===== 验证 =====
- if [[ ! -f "$JAR_FILE" ]]; then
- echo "ERROR: JAR 文件不存在: $JAR_FILE"
- exit 1
- fi
- if [[ ! -d "$CONFIG_DIR" ]]; then
- echo "ERROR: 配置目录不存在: $CONFIG_DIR"
- exit 1
- fi
- CONFIG_FILE="$CONFIG_DIR/application-$PROFILE.yml"
- if [[ ! -f "$CONFIG_FILE" ]]; then
- echo "ERROR: 配置文件不存在: $CONFIG_FILE"
- echo "可用环境: dev | test | prod"
- exit 1
- fi
- # ===== 日志目录 =====
- mkdir -p "$APP_DIR/logs"
- # ===== 启动 =====
- echo "========================================"
- echo " CFC Backend 启动"
- echo " 环境: $PROFILE"
- echo " 配置文件: $CONFIG_FILE"
- echo " JAR: $JAR_FILE"
- echo " 日志: $LOG_FILE"
- echo "========================================"
- # spring.config.location 末尾的 / 非常重要:表示作为目录搜索,
- # Spring Boot 会同时加载 application.yml 和 application-{profile}.yml。
- # 外部文件覆盖 JAR 内置文件,相同属性以外部文件为准。
- exec java -jar "$JAR_FILE" \
- --spring.profiles.active="$PROFILE" \
- --spring.config.location="$CONFIG_DIR/" \
- >> "$LOG_FILE" 2>&1
|