fix(deploy): sync static assets and nginx CSS route

Copy .next/static and public into standalone after build; serve
/_next/static from nginx; verify CSS in install.sh.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Андрей Бобырев
2026-05-24 23:19:03 +03:00
parent 35c677eede
commit 1196bc3d11
5 changed files with 66 additions and 5 deletions

View File

@@ -50,6 +50,7 @@ build_app() {
npm ci
npx prisma generate
npm run build
bash scripts/sync-standalone-assets.sh "${INSTALL_DIR}"
npx prisma db push --accept-data-loss
}
@@ -81,6 +82,14 @@ server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
location /_next/static/ {
alias ${INSTALL_DIR}/.next/static/;
expires 1y;
add_header Cache-Control "public, max-age=31536000, immutable";
access_log off;
}
location / {
proxy_pass http://127.0.0.1:${NODE_PORT};
proxy_http_version 1.1;

View File

@@ -0,0 +1,29 @@
#!/usr/bin/env bash
# Copy Next.js static assets into standalone output (required for `node server.js`).
set -euo pipefail
ROOT="${1:-$(cd "$(dirname "$0")/.." && pwd)}"
STANDALONE="${ROOT}/.next/standalone"
STATIC_SRC="${ROOT}/.next/static"
PUBLIC_SRC="${ROOT}/public"
if [[ ! -d "${STANDALONE}" ]]; then
echo "[sync-standalone-assets] No .next/standalone — skipping (non-standalone build?)" >&2
exit 0
fi
if [[ ! -d "${STATIC_SRC}" ]]; then
echo "[sync-standalone-assets] ERROR: missing ${STATIC_SRC} — run npm run build first" >&2
exit 1
fi
mkdir -p "${STANDALONE}/.next"
rm -rf "${STANDALONE}/.next/static"
cp -a "${STATIC_SRC}" "${STANDALONE}/.next/static"
if [[ -d "${PUBLIC_SRC}" ]]; then
rm -rf "${STANDALONE}/public"
cp -a "${PUBLIC_SRC}" "${STANDALONE}/public"
fi
echo "[sync-standalone-assets] OK: .next/static + public → ${STANDALONE}"