#!/bin/bash # 后端应用启动脚本 # 负责验证环境配置并启动Spring Boot应用 set -e # 导入环境配置脚本 source /app/scripts/backend-env.sh echo "=== 安信数字信贷系统后端启动 ===" echo "启动时间: $(date)" echo "时区: $TZ" # 验证必需的环境变量 echo "正在验证环境配置..." if ! validate_required_env; then echo "环境配置验证失败,退出启动" exit 1 fi # 显示当前配置 show_config # 等待数据库服务可用 echo "正在等待数据库服务可用..." max_attempts=30 attempt=1 while [ $attempt -le $max_attempts ]; do if nc -z "$DB_HOST" "$DB_PORT" 2>/dev/null; then echo "数据库服务已可用 ($DB_HOST:$DB_PORT)" break fi echo "等待数据库服务... (尝试 $attempt/$max_attempts)" sleep 2 attempt=$((attempt + 1)) done if [ $attempt -gt $max_attempts ]; then echo "错误: 无法连接到数据库服务 $DB_HOST:$DB_PORT" exit 1 fi # 创建必要的目录 mkdir -p "$LOG_PATH" "$UPLOAD_PATH" # 设置Spring Boot配置文件路径(使用Docker专用配置) export SPRING_CONFIG_LOCATION="classpath:/application.yml,/app/config/application-docker.yml" # 构建完整的Java启动命令 JAVA_CMD="java $JAVA_OPTS \ -Dserver.port=$SERVER_PORT \ -Dspring.profiles.active=$SPRING_PROFILES_ACTIVE \ -Dlogging.config=/app/config/logback-spring.xml \ -Dlog.path=$LOG_PATH \ -DLOG_PATH=$LOG_PATH \ -DLOG_LEVEL=$LOG_LEVEL \ -Dlogging.path=$LOG_PATH \ -Dlogging.file.path=$LOG_PATH \ -Druoyi.profile=$UPLOAD_PATH \ -Dspring.datasource.url=jdbc:mysql://$DB_HOST:$DB_PORT/$DB_NAME?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true \ -Dspring.datasource.username=$DB_USER \ -Dspring.datasource.password=$DB_PASSWORD \ -jar app.jar" echo "启动命令: $JAVA_CMD" echo "=== 应用启动中... ===" # 启动应用 exec $JAVA_CMD