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