aidress/entrypoint.sh
2025-03-21 22:49:03 +08:00

93 lines
2.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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