casualroom/apps/fenghuo/api/entrypoint.sh

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