Loading...

Öğren / Deploy

Next.js Uygulamasını cdn.com.tr'de Deploy Etme

Sunucu yönetmeden Next.js uygulamanı yayına al: bir kez container'a hazırla, Git'e push et; cdn.com.tr onu derler, yönetilen bir container app olarak çalıştırır ve özel alan adı ile otomatik HTTPS'in olduğu CDN edge üzerinden sunar.

8 dk okuma Orta Güncellendi

Next.js Uygulamasını cdn.com.tr'de Deploy Etme

Neye ihtiyacın var

Üç şey gerekir: bir Next.js uygulaması (mevcut olan da olur), onun için bir Git deposu (GitHub doğrudan çalışır) ve bir cdn.com.tr hesabı. Sunucu kurmana, bir VM'e Node yüklemene veya reverse proxy ayarlamana gerek yok — çalışma ortamı, TLS ve teslimat platform tarafında. Uygulama tarafında tek değişiklik, Next.js'e container'da temiz çalışması için kendi kendine yeten bir build üretmesini söylemek.

Uygulamayı container'a hazırla

Önce Next.js standalone çıktısını aç. Bu, yalnızca sunucunun ihtiyaç duyduğu dosyaları paketler; imajı küçük, container'ı basit tutar.

next.config.js

// next.config.js
module.exports = {
  output: 'standalone',
};

Bir Dockerfile ekle

Küçük, çok-aşamalı bir Dockerfile uygulamayı bir aşamada derler ve sonraki aşamada yalnızca çalışma çıktısını taşır. Bu dosyayı deponun köküne ekle.

Dockerfile

# Build aşaması
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# Runtime aşaması
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public
EXPOSE 3000
CMD ["node", "server.js"]

Git ile deploy (önerilen)

cdn.com.tr panelinde bir container app oluştur ve Git deponu bağla. Platform Dockerfile'ını okur, imajı derler ve container'ı çalıştırır — bakımını yapacağın bir build sunucusu yok. O andan sonra deploy sadece branch'ine push etmektir: her push taze bir build ve sıfır-kesinti (zero-downtime) yayına alma tetikler.

Bir değişikliği yayına al

git add .
git commit -m "Anasayfayı guncelle"
git push origin main
# cdn.com.tr yeni imaji derler ve otomatik yayina alir
Next.js Uygulamasını cdn.com.tr'de Deploy Etme — Git ile deploy (önerilen)
cdn.com.tr üzerinde yönetilen platformlar ve container app’ler.

Ya da cdnctl CLI ile deploy

Komut satırını veya bir CI pipeline'ını mı tercih ediyorsun? cdnctl operatör CLI'si container app'lerini kod olarak yönetir. Bir kez giriş yap ve hesabını seç, sonra bir registry'ye push ettiğin imajdan app'i oluştur — ve aynı araçla log akıt, ölçekle veya geri al. cdn.com.tr'de hızlı yayına almayı sağlayan tam da bu: konsolda tıklamak yerine tek komut.

cdnctl
cdnctl login
cdnctl accounts use <account_uuid>

# push ettigin imajdan app'i olustur, kendi alan adinda
cdnctl container apps create \
  --name my-nextjs \
  --image registry.example.com/acme/my-nextjs --tag 1.0.0 \
  --port 3000 --domain app.example.com \
  --healthcheck /api/health --healthcheck-type http

# sonra istedigin zaman:
cdnctl container apps logs   --app <app_uuid> --tail 100
cdnctl container apps scale  --app <app_uuid> --replicas 2
cdnctl container apps deploy --app <app_uuid>

Özel alan adı, HTTPS ve edge

Alan adını uygulamaya yönlendir; cdn.com.tr SSL sertifikasını otomatik alır ve yeniler — elle certbot yok. Next.js uygulaman artık CDN edge arkasında çalışır: statik varlıklar önbelleklenip her ziyaretçiye yakın sunulur, WAF kötü niyetli trafiği filtreler ve ani trafik tek bir container'ı boğmak yerine edge'de karşılanır. Altındaki hiçbir altyapıyı işletmeden hızlı, güvenli, üretim düzeyinde bir Next.js deploy'una sahip olursun.

İyi uyan senaryolar

Pazarlama & içerik siteleri

Edge'den sunulan Next.js sayfaları dünya genelinde hızlı açılır ve lansman veya viral anlarda ayakta kalır.

Full-stack uygulama & API'ler

Next.js API route'larını ve SSR'ını otomatik HTTPS ve önündeki WAF ile yönetilen bir container olarak çalıştır.

Sık deploy eden ekipler

Sıfır-kesinti yayına alan Git-push deploy'lar CI'ye ve sık sürümlere sunucu dadılığı olmadan uyar.

Next.js deploy — sık sorulanlar

SSR ve API route'ları çalışır mı, yoksa sadece statik export mu?

İkisi de çalışır. Uygulama gerçek bir Node container'ı olarak çalıştığı için (statik export değil) server-side rendering, API route'ları ve middleware normal çalışır. CDN önbelleklenebileni önbellekler, dinamik istekleri container'a geçirir.

Güncelleme ve geri alma nasıl çalışır?

Bağlı branch'ine her push yeni bir imaj derler ve sıfır kesintiyle yayına alır. Bir build başarısız olursa önceki sürüm servise devam eder, yani hatalı bir commit siteni düşürmez.

Sunucuyu, Node sürümünü veya SSL'i yönetmem gerekir mi?

Hayır. Container çalışma ortamı, ölçekleme, TLS sertifikaları ve edge senin için yönetilir. Sen uygulamanı ve Dockerfile'ını kontrol edersin; altındaki altyapı halledilir.