build: 修改make start为静态部署
This commit is contained in:
parent
b28185b552
commit
9d1c63e3a3
1
Makefile
1
Makefile
|
|
@ -132,6 +132,7 @@ stop:
|
||||||
@-pkill -f "next start" 2>/dev/null || true
|
@-pkill -f "next start" 2>/dev/null || true
|
||||||
@-pkill -f "next-server" 2>/dev/null || true
|
@-pkill -f "next-server" 2>/dev/null || true
|
||||||
@-pkill -f "next-server" 2>/dev/null || true
|
@-pkill -f "next-server" 2>/dev/null || true
|
||||||
|
@-pkill -f "frontend/.next/standalone/server.js" 2>/dev/null || true
|
||||||
@-nginx -c $(PWD)/docker/nginx/nginx.local.conf -p $(PWD) -s quit 2>/dev/null || true
|
@-nginx -c $(PWD)/docker/nginx/nginx.local.conf -p $(PWD) -s quit 2>/dev/null || true
|
||||||
@sleep 1
|
@sleep 1
|
||||||
@-pkill -9 nginx 2>/dev/null || true
|
@-pkill -9 nginx 2>/dev/null || true
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,43 @@ else
|
||||||
echo "Python is required to generate BETTER_AUTH_SECRET, but neither python3 nor python was found."
|
echo "Python is required to generate BETTER_AUTH_SECRET, but neither python3 nor python was found."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
FRONTEND_CMD="env BETTER_AUTH_SECRET=$($PYTHON_BIN -c 'import secrets; print(secrets.token_hex(16))') pnpm run preview"
|
FRONTEND_STANDALONE_DIR="$REPO_ROOT/frontend/.next/standalone"
|
||||||
|
FRONTEND_STANDALONE_SERVER="$FRONTEND_STANDALONE_DIR/server.js"
|
||||||
|
FRONTEND_STANDALONE_STATIC_DIR="$FRONTEND_STANDALONE_DIR/.next/static"
|
||||||
|
FRONTEND_SOURCE_STATIC_DIR="$REPO_ROOT/frontend/.next/static"
|
||||||
|
FRONTEND_STANDALONE_PUBLIC_DIR="$FRONTEND_STANDALONE_DIR/public"
|
||||||
|
FRONTEND_SOURCE_PUBLIC_DIR="$REPO_ROOT/frontend/public"
|
||||||
|
|
||||||
|
if [ ! -f "$FRONTEND_STANDALONE_SERVER" ]; then
|
||||||
|
echo "✗ Frontend standalone server not found: $FRONTEND_STANDALONE_SERVER"
|
||||||
|
echo " make start (prod) now uses prebuilt standalone assets and will not run local build."
|
||||||
|
echo " Please prepare frontend artifacts first (example):"
|
||||||
|
echo " pnpm -C frontend build"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Align local runtime layout with deploy-frontend-standalone.sh:
|
||||||
|
# standalone + .next/static + public under frontend/.next/standalone/
|
||||||
|
if [ ! -d "$FRONTEND_STANDALONE_STATIC_DIR" ] && [ -d "$FRONTEND_SOURCE_STATIC_DIR" ]; then
|
||||||
|
mkdir -p "$FRONTEND_STANDALONE_DIR/.next"
|
||||||
|
cp -R "$FRONTEND_SOURCE_STATIC_DIR" "$FRONTEND_STANDALONE_STATIC_DIR"
|
||||||
|
fi
|
||||||
|
if [ ! -d "$FRONTEND_STANDALONE_PUBLIC_DIR" ] && [ -d "$FRONTEND_SOURCE_PUBLIC_DIR" ]; then
|
||||||
|
cp -R "$FRONTEND_SOURCE_PUBLIC_DIR" "$FRONTEND_STANDALONE_PUBLIC_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "$FRONTEND_STANDALONE_STATIC_DIR" ]; then
|
||||||
|
echo "✗ Missing standalone static assets: $FRONTEND_STANDALONE_STATIC_DIR"
|
||||||
|
echo " Please ensure .next/static is available for standalone runtime."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ ! -d "$FRONTEND_STANDALONE_PUBLIC_DIR" ]; then
|
||||||
|
echo "✗ Missing standalone public assets: $FRONTEND_STANDALONE_PUBLIC_DIR"
|
||||||
|
echo " Please ensure public/ is available for standalone runtime."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
FRONTEND_CMD="env BETTER_AUTH_SECRET=$($PYTHON_BIN -c 'import secrets; print(secrets.token_hex(16))') HOSTNAME=0.0.0.0 PORT=3000 node server.js"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ── Stop existing services ────────────────────────────────────────────────────
|
# ── Stop existing services ────────────────────────────────────────────────────
|
||||||
|
|
@ -48,6 +84,7 @@ pkill -f "langgraph dev" 2>/dev/null || true
|
||||||
pkill -f "uvicorn app.gateway.app:app" 2>/dev/null || true
|
pkill -f "uvicorn app.gateway.app:app" 2>/dev/null || true
|
||||||
pkill -f "next dev" 2>/dev/null || true
|
pkill -f "next dev" 2>/dev/null || true
|
||||||
pkill -f "next-server" 2>/dev/null || true
|
pkill -f "next-server" 2>/dev/null || true
|
||||||
|
pkill -f "frontend/.next/standalone/server.js" 2>/dev/null || true
|
||||||
nginx -c "$REPO_ROOT/docker/nginx/nginx.local.conf" -p "$REPO_ROOT" -s quit 2>/dev/null || true
|
nginx -c "$REPO_ROOT/docker/nginx/nginx.local.conf" -p "$REPO_ROOT" -s quit 2>/dev/null || true
|
||||||
sleep 1
|
sleep 1
|
||||||
pkill -9 nginx 2>/dev/null || true
|
pkill -9 nginx 2>/dev/null || true
|
||||||
|
|
@ -110,6 +147,7 @@ cleanup() {
|
||||||
pkill -f "next dev" 2>/dev/null || true
|
pkill -f "next dev" 2>/dev/null || true
|
||||||
pkill -f "next start" 2>/dev/null || true
|
pkill -f "next start" 2>/dev/null || true
|
||||||
pkill -f "next-server" 2>/dev/null || true
|
pkill -f "next-server" 2>/dev/null || true
|
||||||
|
pkill -f "frontend/.next/standalone/server.js" 2>/dev/null || true
|
||||||
# Kill nginx using the captured PID first (most reliable),
|
# Kill nginx using the captured PID first (most reliable),
|
||||||
# then fall back to pkill/killall for any stray nginx workers.
|
# then fall back to pkill/killall for any stray nginx workers.
|
||||||
if [ -n "${NGINX_PID:-}" ] && kill -0 "$NGINX_PID" 2>/dev/null; then
|
if [ -n "${NGINX_PID:-}" ] && kill -0 "$NGINX_PID" 2>/dev/null; then
|
||||||
|
|
@ -181,7 +219,11 @@ echo "Starting Gateway API..."
|
||||||
echo "✓ Gateway API started on localhost:8001"
|
echo "✓ Gateway API started on localhost:8001"
|
||||||
|
|
||||||
echo "Starting Frontend..."
|
echo "Starting Frontend..."
|
||||||
(cd frontend && $FRONTEND_CMD > ../logs/frontend.log 2>&1) &
|
if $DEV_MODE; then
|
||||||
|
(cd frontend && $FRONTEND_CMD > ../logs/frontend.log 2>&1) &
|
||||||
|
else
|
||||||
|
(cd frontend/.next/standalone && $FRONTEND_CMD > ../../../logs/frontend.log 2>&1) &
|
||||||
|
fi
|
||||||
./scripts/wait-for-port.sh 3000 120 "Frontend" || {
|
./scripts/wait-for-port.sh 3000 120 "Frontend" || {
|
||||||
echo " See logs/frontend.log for details"
|
echo " See logs/frontend.log for details"
|
||||||
tail -20 logs/frontend.log
|
tail -20 logs/frontend.log
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue