Skip to content

Commit 7c0027f

Browse files
committed
Create local-next-prod.sh
1 parent 2aa85fb commit 7c0027f

1 file changed

Lines changed: 63 additions & 0 deletions

File tree

local-next-prod.sh

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
# Run .NET backend and Next.js production build locally, with .NET proxying all web traffic.
5+
# Usage:
6+
# chmod +x ./local-next-prod.sh
7+
# ./local-next-prod.sh
8+
9+
ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
10+
API_URL="http://localhost:8080"
11+
12+
echo "[local-next-prod] Using repo root: $ROOT_DIR"
13+
echo "[local-next-prod] Backend URL: $API_URL"
14+
15+
echo "[local-next-prod] Starting .NET backend..."
16+
(
17+
cd "$ROOT_DIR/TechStacks"
18+
ASPNETCORE_ENVIRONMENT="${ASPNETCORE_ENVIRONMENT:-Development}" \
19+
ASPNETCORE_URLS="$API_URL" \
20+
dotnet run --project TechStacks.csproj
21+
) &
22+
DOTNET_PID=$!
23+
echo "[local-next-prod] .NET backend PID: $DOTNET_PID"
24+
25+
cleanup() {
26+
echo "[local-next-prod] Stopping .NET backend (pid=$DOTNET_PID)..."
27+
kill "$DOTNET_PID" 2>/dev/null || true
28+
}
29+
trap cleanup EXIT
30+
31+
# Wait for backend to be ready
32+
echo "[local-next-prod] Waiting for backend to become ready at $API_URL..."
33+
for i in {1..30}; do
34+
if curl -sf "$API_URL/metadata" > /dev/null 2>&1; then
35+
echo "[local-next-prod] Backend is up."
36+
break
37+
fi
38+
sleep 1
39+
echo "[local-next-prod] Still waiting ($i)..."
40+
done
41+
42+
if ! curl -sf "$API_URL/metadata" > /dev/null 2>&1; then
43+
echo "[local-next-prod] ERROR: Backend did not start in time at $API_URL" >&2
44+
exit 1
45+
fi
46+
47+
# Build Next.js in production mode
48+
echo "[local-next-prod] Building Next.js (production)..."
49+
(
50+
cd "$ROOT_DIR/TechStacks.Client"
51+
NODE_ENV=production \
52+
INTERNAL_API_URL="$API_URL" \
53+
ASPNETCORE_URLS="$API_URL" \
54+
npm run build:prod
55+
)
56+
57+
echo "[local-next-prod] Starting Next.js (production) on http://localhost:3000 ..."
58+
cd "$ROOT_DIR/TechStacks.Client"
59+
NODE_ENV=production \
60+
INTERNAL_API_URL="$API_URL" \
61+
ASPNETCORE_URLS="$API_URL" \
62+
npm run start
63+

0 commit comments

Comments
 (0)