40 lines
1.4 KiB
Bash
Executable File
40 lines
1.4 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# 从 DATABASE_URL 环境变量中提取主机名、端口和用户名
|
|
DB_HOST=$(echo $DATABASE_URL | cut -d '@' -f 2 | cut -d ':' -f 1)
|
|
DB_PORT=$(echo $DATABASE_URL | cut -d ':' -f 4 | cut -d '/' -f 1)
|
|
DB_USER=$(echo $DATABASE_URL | cut -d '/' -f 3 | cut -d ':' -f 1)
|
|
|
|
echo "等待数据库就绪..."
|
|
until nc -z $DB_HOST $DB_PORT; do
|
|
echo "Database is unavailable - sleeping"
|
|
sleep 1
|
|
done
|
|
|
|
echo "数据库已就绪,尝试启动应用..."
|
|
|
|
# 尝试启动应用
|
|
bun apps/api/dist/index.js
|
|
APP_PID=$!
|
|
sleep 5
|
|
|
|
# 检查应用是否还在运行
|
|
if ! kill -0 $APP_PID 2>/dev/null; then
|
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
|
echo "!! !!"
|
|
echo "!! 应用启动失败,可能需要数据库迁移"
|
|
echo "!! !!"
|
|
echo "!! 容器已进入等待模式,请手动执行迁移:"
|
|
echo "!! 1. docker exec -it <容器名> sh"
|
|
echo "!! 2. pnpm --filter @fenghuo/db db:deploy"
|
|
echo "!! 3. exit"
|
|
echo "!! 4. docker restart <容器名>"
|
|
echo "!! !!"
|
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
|
|
|
# 保持容器运行以便手动干预
|
|
sleep infinity
|
|
else
|
|
# 应用正常启动,等待它结束
|
|
wait $APP_PID
|
|
fi |