更新启动脚本
This commit is contained in:
@@ -1,30 +1,51 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -e
|
# 关闭 set -e 才能执行最后的清理逻辑
|
||||||
|
set +e
|
||||||
|
|
||||||
# 启动 Dart 后端 (内部端口 8081)
|
# --- 1. 后端配置 ---
|
||||||
echo "Starting Dart backend on port 8081..."
|
echo "Starting Dart backend on port 8081..."
|
||||||
export PORT=8081
|
export PORT=8081
|
||||||
|
# 确保数据目录存在(根据你之前的日志)
|
||||||
|
mkdir -p /app/data /app/cache
|
||||||
/app/bin/server &
|
/app/bin/server &
|
||||||
BACKEND_PID=$!
|
BACKEND_PID=$!
|
||||||
|
|
||||||
# 等待后端启动
|
# 等待后端稍微启动一下
|
||||||
sleep 2
|
sleep 2
|
||||||
|
|
||||||
# 启动前端 (Node.js SSR, 端口 8080)
|
# --- 2. 前端配置 ---
|
||||||
echo "Starting frontend on port 8080..."
|
echo "Starting frontend on port 8080..."
|
||||||
export PORT=8080
|
export PORT=8080
|
||||||
export HOST=0.0.0.0
|
export HOST=0.0.0.0
|
||||||
|
# 指向本地回环地址,因为前后端在同一个容器内
|
||||||
export BACKEND_URL=http://127.0.0.1:8081
|
export BACKEND_URL=http://127.0.0.1:8081
|
||||||
|
|
||||||
cd /app/web/build
|
cd /app/web/build
|
||||||
|
|
||||||
|
# 启动前端并放到后台
|
||||||
node index.js &
|
node index.js &
|
||||||
FRONTEND_PID=$!
|
FRONTEND_PID=$!
|
||||||
|
|
||||||
# 捕获退出信号,优雅关闭两个服务
|
# --- 3. 信号捕获 (修复了 SIGTERM 报错) ---
|
||||||
trap "echo 'Shutting down...'; kill $BACKEND_PID $FRONTEND_PID 2>/dev/null; exit 0" TERM INT
|
trap "echo 'Shutting down...'; kill $BACKEND_PID $FRONTEND_PID 2>/dev/null; exit 0" TERM INT
|
||||||
|
|
||||||
# 等待任意进程退出
|
echo "Both services are running. Monitoring..."
|
||||||
wait -n $BACKEND_PID $FRONTEND_PID
|
|
||||||
|
|
||||||
# 如果有一个进程退出,杀死另一个
|
# --- 4. 运行监控 ---
|
||||||
|
# 因为 sh 没有 wait -n,我们用循环检查进程是否存在
|
||||||
|
while true; do
|
||||||
|
if ! kill -0 $BACKEND_PID 2>/dev/null; then
|
||||||
|
echo "Backend (Dart) exited unexpectedly."
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if ! kill -0 $FRONTEND_PID 2>/dev/null; then
|
||||||
|
echo "Frontend (Node.js) exited unexpectedly."
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
|
||||||
|
# --- 5. 清理退出 ---
|
||||||
|
echo "Cleaning up processes..."
|
||||||
kill $BACKEND_PID $FRONTEND_PID 2>/dev/null || true
|
kill $BACKEND_PID $FRONTEND_PID 2>/dev/null || true
|
||||||
exit 1
|
exit 1
|
||||||
Reference in New Issue
Block a user