Files
kolaytercih/scripts/standalone-linkleri-onar.sh
bilalgursen 4c618781f6
All checks were successful
Deploy / deploy (push) Successful in 7m33s
Docker build'ini optimize et: OOM kökü çözümü + bellek sınırlı builder
Prod VPS'te next build sırasında makineyi kilitleyen OOM'un çözümü:

- serverExternalPackages'a @google/genai, @anthropic-ai/sdk, resend eklendi;
  Turbopack artık genai'nin protobufjs/google-auth-library/ws zincirini
  derlemiyor (c2aba25 sonrası OOM'un tetiği buydu).
- Docker build'inde (BUILD_KAYNAK_KISITLI=1) bellek kısıtları: Turbopack 1.5G
  hedefi, statik üretim tek worker × 4 sayfa, prerender source map kapalı.
- Dockerfile: runner'a tam node_modules kopyası kaldırıldı (imaj ~1.9G→966M),
  pnpm store + .next/cache BuildKit cache mount'ları, açık COPY listesi,
  V8 heap sınırı.
- scripts/standalone-linkleri-onar.sh: Turbopack ESM external'ların kök
  node_modules symlink'ini nft trace'ine yazmıyor; eksik linkler build sonrası
  tamamlanmazsa runtime MODULE_NOT_FOUND ile düşer.
- ci.yaml: build bellek sınırlı buildx docker-container builder'da (2200m,
  max-parallelism 1; BuildKit --memory bayrağını yok sayıyor), deploy
  up -d --no-build ile ayrıldı, temizlik if: always() ile her koşuda.
- compose: app'e mem_limit 1g + oom_score_adj -600.
- Kullanılmayan simple-icons ve @react-pdf/renderer kaldırıldı; npm artığı
  package-lock.json silindi.

Doğrulama: imaj 2 CPU/2GiB VM'de sıfırdan build edildi, konteynerde ana
sayfa/universite 200 ve üç ESM external import OK.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-06 17:20:17 +03:00

42 lines
1.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/sh
# Next standalone çıktısında eksik kök node_modules linklerini tamamlar.
#
# Neden: Turbopack, serverExternalPackages'taki ESM paketleri (@google/genai,
# @anthropic-ai/sdk, resend) çalışma anında bare import ile yükler ama nft
# trace'ine yalnızca .pnpm gerçek yollarını yazar — kök symlink standalone'a
# kopyalanmaz ve import MODULE_NOT_FOUND ile düşer. (CJS external'larda —
# better-sqlite3, iyzipay — symlink trace'e giriyor, sorun yalnızca ESM'de.)
# Bu script .pnpm altındaki her paket için eksik kök girdisini symlink'ler;
# mevcut girdilere dokunmaz. Yeni bir external eklendiğinde de kendiliğinden
# kapsar, paket adı/versiyon sabitlemez.
set -eu
KOK="${1:-.next/standalone}/node_modules"
[ -d "$KOK/.pnpm" ] || { echo "standalone .pnpm yok, atlandi: $KOK"; exit 0; }
cd "$KOK"
for d in .pnpm/*/node_modules/*; do
[ -e "$d" ] || continue
base=${d##*/}
case "$base" in
.*) continue ;;
@*)
for sub in "$d"/*; do
[ -d "$sub" ] || continue
hedef="$base/${sub##*/}"
if [ ! -e "$hedef" ]; then
mkdir -p "$base"
ln -s "../$sub" "$hedef"
echo "link: $hedef"
fi
done
;;
*)
if [ ! -e "$base" ]; then
ln -s "$d" "$base"
echo "link: $base"
fi
;;
esac
done