93 lines
2.5 KiB
Bash
Executable File
93 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
||
set -e
|
||
|
||
echo "正在启动AI Dressing服务..."
|
||
|
||
# 检查是否存在.env文件,不存在则使用内置的.env.built
|
||
if [ ! -f ".env" ]; then
|
||
echo "未找到.env文件,使用构建时创建的.env.built文件"
|
||
if [ -f ".env.built" ]; then
|
||
cp .env.built .env
|
||
echo "已复制.env.built到.env"
|
||
else
|
||
echo "警告:未找到.env.built文件,将使用系统环境变量"
|
||
fi
|
||
else
|
||
echo "使用已存在的.env文件"
|
||
fi
|
||
|
||
# 输出关键环境变量(隐藏敏感信息)
|
||
echo "检查关键环境变量:"
|
||
# 数据库配置
|
||
if [ -n "$DB_HOST" ]; then
|
||
echo "- DB_HOST: 已设置 ✓"
|
||
else
|
||
echo "- DB_HOST: 未设置 ❌"
|
||
fi
|
||
|
||
if [ -n "$DB_PORT" ]; then
|
||
echo "- DB_PORT: 已设置 ✓"
|
||
else
|
||
echo "- DB_PORT: 未设置 ❌"
|
||
fi
|
||
|
||
if [ -n "$DB_NAME" ]; then
|
||
echo "- DB_NAME: 已设置 ✓"
|
||
else
|
||
echo "- DB_NAME: 未设置 ❌"
|
||
fi
|
||
|
||
# API密钥
|
||
if [ -n "$DASHSCOPE_API_KEY" ]; then
|
||
echo "- DASHSCOPE_API_KEY: 已设置(已隐藏) ✓"
|
||
else
|
||
echo "- DASHSCOPE_API_KEY: 未设置 ❌"
|
||
fi
|
||
|
||
if [ -n "$QCLOUD_SECRET_ID" ] && [ -n "$QCLOUD_SECRET_KEY" ]; then
|
||
echo "- 腾讯云凭证: 已设置(已隐藏) ✓"
|
||
else
|
||
echo "- 腾讯云凭证: 未设置 ❌"
|
||
fi
|
||
|
||
# 检查依赖服务连接
|
||
echo "检查数据库连接..."
|
||
MAX_RETRIES=10
|
||
COUNT=0
|
||
|
||
if [ -n "$DB_HOST" ] && [ -n "$DB_PORT" ]; then
|
||
while [ $COUNT -lt $MAX_RETRIES ]; do
|
||
if nc -z -w3 $DB_HOST $DB_PORT; then
|
||
echo "数据库连接成功!"
|
||
break
|
||
fi
|
||
echo "等待数据库连接... ($((COUNT+1))/$MAX_RETRIES)"
|
||
COUNT=$((COUNT+1))
|
||
sleep 2
|
||
done
|
||
|
||
if [ $COUNT -eq $MAX_RETRIES ]; then
|
||
echo "警告:无法连接到数据库。服务将继续启动,但可能无法正常工作。"
|
||
fi
|
||
else
|
||
echo "跳过数据库连接检查:未设置DB_HOST或DB_PORT"
|
||
fi
|
||
|
||
# 应用数据库迁移
|
||
echo "应用数据库迁移..."
|
||
if [ -f "create_migration.py" ]; then
|
||
python create_migration.py upgrade || echo "警告:数据库迁移失败,但将继续启动服务"
|
||
else
|
||
echo "未找到create_migration.py,跳过数据库迁移"
|
||
fi
|
||
|
||
# 启动服务
|
||
echo "AI Dressing服务启动中..."
|
||
# 根据环境变量决定是否使用热重载
|
||
if [ "$ENV" = "development" ]; then
|
||
echo "以开发模式启动,启用热重载..."
|
||
exec uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
|
||
else
|
||
echo "以生产模式启动..."
|
||
exec uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 4
|
||
fi |