Docker build'ini optimize et: OOM kökü çözümü + bellek sınırlı builder
All checks were successful
Deploy / deploy (push) Successful in 7m33s

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>
This commit is contained in:
bilalgursen
2026-08-06 17:20:17 +03:00
parent e62c6f07df
commit 4c618781f6
9 changed files with 172 additions and 12912 deletions

View File

@@ -1,13 +1,26 @@
node_modules
.next
.git
.gitea
.agents
.claude
.mcp.json
# Yalnızca kök dizindeki .md dosyaları (path ayracını geçmez);
# content/rehber/*.md build için gerekli, etkilenmez.
*.md
.env*
!.env.example
docs/
drizzle/
# scripts/ build'de kullanılmaz; istisnalar: entrypoint + standalone link onarımı
scripts/*
!scripts/docker-entrypoint.sh
!scripts/standalone-linkleri-onar.sh
package-lock.json
skills-lock.json
components.json
eslint.config.mjs
drizzle.config.ts
data/
!data/app.db
!data/yokatlas.db