İçeriğe geç
DETPUL

Deploy

Repo'n neye ihtiyaç duyar, deploy nasıl ilerler.

Desteklenen runtime

Şu an yalnızca Node.js / Next.js destekleniyor. Python, Go, PHP, Rust gibi diğer runtime'lar planlanıyor ama bu sürümde yok.

İki deploy modu

  • Hazır image — bir container registry'den image referansı verirsin (--image / dashboard "Hazır image"). Build adımı atlanır, doğrudan deploy edilir.
  • Repo'dan build — bir https git repo URL'i verirsin (--repo / dashboard "Repo'dan build"). Repo klonlanır, framework algılanır, container image otomatik üretilir.

Next.js repo gereksinimleri

Build motoru standalone çıktıyı kopyalar. Bu yüzden next.config.js (veya .ts) içinde şunu ayarlaman gerekir:

/** @type {import('next').NextConfig} */
module.exports = {
  output: 'standalone',
};

Bu ayar olmadan build başarısız olur — motor .next/standalone ve .next/static dizinlerini bekler.

output: 'standalone' eksikse deploy Başarısız durumuna düşer. Build log'larında hatayı görürsün.

Düz Node.js repo gereksinimleri

  • package.json içindeki start script'i node ... ile çalışmalı — motor npm start çalıştırır.
  • Sunucun PORT ortam değişkenini dinlemeli ve 0.0.0.0'a bind olmalı (yalnız localhost değil).

Güvenlik: non-root çalışma

Üretilen image'lar her zaman non-root (UID 10001) çalışır — bunu motor otomatik ayarlar, repo'nda ekstra bir şey yapmana gerek yok. Container'ının 1024 altı porta bind olmasına gerek yoksa (genelde Next.js/Node için gerekmez) bu kısıtlama seni etkilemez.

Repo URL kısıtları

--repo yalnızca genel (public) bir https git URL'i kabul eder. İç ağ, link-local ve localhost adresleri reddedilir — bu bir güvenlik önlemi, kullanıcı hatası değil.

Deploy yaşam döngüsü

  1. Sırada — istek alındı, kuyrukta bekliyor.
  2. Build ediliyor — yalnızca repo modunda: klonlama + image üretimi.
  3. Deploy ediliyor — image container'a yerleştiriliyor.
  4. Canlı — sağlık kontrolü geçti, URL hazır.
  5. Başarısız — build veya deploy hata verdi; log'larda detay var.
  6. İptal — deploy iptal edildi.

Logları görüntüleme

Build logları — geçmiş, yakalanmış kayıtlar. Dashboard'da deploy geçmişinde, API'de GET /api/deployments/:id/build-logs.

Runtime logları — canlı akış (SSE). Dashboard'da "Loglar" butonu, terminalde deppul logs -f.

Subdomain ve SSL

Her canlı deploy otomatik bir adres alır: <deployment-id>.deppul.app.

Şu an bu adres geliştirme ortamında http:// ile döner. Otomatik SSL (Let's Encrypt) prod ortamına geçişte devreye girecek.

Free tier limiti

Free tier'da en fazla 1 proje oluşturabilirsin. Limit dolunca proje oluşturma isteği reddedilir; detay için Kavramlar sayfasına bak.