58 lines
2.0 KiB
Bash
58 lines
2.0 KiB
Bash
#!/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"
|