fix: 修复生产环境

This commit is contained in:
丹尼尔
2026-03-15 17:59:56 +08:00
parent 0e9bdf0052
commit 31cac56fad
5 changed files with 85 additions and 9 deletions

View File

@@ -1,19 +1,31 @@
#!/usr/bin/env sh
set -e
# 不 set -e,避免任一进程启动失败时直接退出导致容器无服务
PORT="${PORT:-3000}"
BACKEND_PORT="${BACKEND_PORT:-8000}"
echo "Starting FastAPI backend on :${BACKEND_PORT}..."
# 先启前端再启后端,保证至少前端能绑定端口;任一退出不杀另一个
echo "Starting Node static frontend on 0.0.0.0:${PORT}..."
HOST=0.0.0.0 PORT="${PORT}" BACKEND_PORT="${BACKEND_PORT}" node dist/server.js &
FRONTEND_PID=$!
echo "Starting FastAPI backend on 0.0.0.0:${BACKEND_PORT}..."
uvicorn backend.main:app --host 0.0.0.0 --port "${BACKEND_PORT}" &
BACKEND_PID=$!
echo "Starting Node static frontend on :${PORT}..."
PORT="${PORT}" BACKEND_PORT="${BACKEND_PORT}" node dist/server.js &
FRONTEND_PID=$!
sleep 2
if ! kill -0 "${FRONTEND_PID}" 2>/dev/null; then
echo "WARN: frontend (node) exited, check logs (e.g. node dist/server.js)"
fi
if ! kill -0 "${BACKEND_PID}" 2>/dev/null; then
echo "WARN: backend (uvicorn) exited, check logs"
fi
trap 'echo "Stopping services..."; kill ${BACKEND_PID} ${FRONTEND_PID} 2>/dev/null || true' INT TERM
wait -n "${BACKEND_PID}" "${FRONTEND_PID}"
# 两进程都退出才结束,避免一个崩了把另一个也杀掉
while kill -0 "${FRONTEND_PID}" 2>/dev/null || kill -0 "${BACKEND_PID}" 2>/dev/null; do
wait -n "${FRONTEND_PID}" "${BACKEND_PID}" 2>/dev/null || true
sleep 1
done