#!/bin/bash set -e # 出错立即退出 # 1. 验证关键配置 echo "验证关键配置..." [ -z "$DATABASE_URL" ] && echo "ERROR: 缺少 DATABASE_URL!" && exit 1 [ -z "$DATABRICKS_HOST" ] && echo "ERROR: 缺少 DATABRICKS_HOST!" && exit 1 [ -z "$DATABRICKS_TOKEN" ] && echo "ERROR: 缺少 DATABRICKS_TOKEN!" && exit 1 [ -z "$DATABRICKS_CLUSTER_ID" ] && echo "ERROR: 缺少 DATABRICKS_CLUSTER_ID!" && exit 1 [ -z "$JWT_SECRET_KEY" ] && echo "ERROR: 缺少 JWT_SECRET_KEY!" && exit 1 [ -z "$SECRET_KEY" ] && echo "ERROR: 缺少 SECRET_KEY!" && exit 1 echo "✅ 关键配置验证通过" # 2. 激活虚拟环境 echo "激活虚拟环境..." . /app/venv/bin/activate echo "✅ 虚拟环境已激活" # 3. 创建databricks-connect配置目录 echo "创建配置目录..." mkdir -p /home/appuser/.databricks-connect echo "✅ 配置目录创建完成" # 4. 生成配置文件(非交互式) echo "生成databricks-connect配置文件..." cat > /home/appuser/.databricks-connect/config << EOF [DEFAULT] host = $DATABRICKS_HOST token = $DATABRICKS_TOKEN cluster_id = $DATABRICKS_CLUSTER_ID port = 15001 accept_eula = yes EOF echo "✅ 配置文件生成完成" # 5. 设置必要的环境变量 echo "设置环境变量..." export SPARK_HOME="$(dirname $(which python))/../lib/python3.12/site-packages/pyspark" export DATABRICKS_HOST="$DATABRICKS_HOST" export DATABRICKS_TOKEN="$DATABRICKS_TOKEN" export DATABRICKS_CLUSTER_ID="$DATABRICKS_CLUSTER_ID" export DATABRICKS_PORT=15001 export PATH="$PATH:/app/venv/bin" echo "✅ 环境变量设置完成" echo "SPARK_HOME=$SPARK_HOME" # 6. 验证配置 echo "验证 databricks-connect 配置..." if databricks-connect test; then echo "✅ databricks-connect 配置验证成功" else echo "❌ databricks-connect 配置验证失败,但继续启动服务..." # 这里不退出,因为有时测试会失败但实际连接是正常的 fi # 7. 启动 Flask 服务 echo "启动 Flask 服务..." exec gunicorn --bind 0.0.0.0:5221 --workers 14 --timeout 600 "$FLASK_APP"