Loading...

Platform rehberi

Kaynaktan Deploy: düz bir klasör nasıl çalışan uygulamaya dönüşür

cdnctl'in klasör tabanlı deploy'unun referansı: mimari, cdnctl.yaml alanları, sınırlar ve gerçekten yaşadığımız hatalarla çözümleri.

Platform yardımına dön

Mimari: cdnctl deploy'dan sonra ne olur

Sizin tarafınızda ne git deposu ne de container registry vardır. Boru hattı şöyle:

  • cdnctl proje klasörünü tar.gz'e paketler (en çok 128 MB) ve hesabınız altında panele yükler.
  • Panel 30 dakika geçerli imzalı bir indirme URL'i üretir — build ortamının kaynağınıza ulaşabilmesinin tek yolu budur.
  • İzole build sandbox'ı (gVisor korumalı pod içinde Kaniko) arşivi çeker, açar ve Dockerfile'ı build eder. Build'ler tipik olarak bir dakika dolayında biter.
  • İmaj, hesabınızın özel registry alanına (registry.cdn.com.tr/<hesap>/<uygulama>) push edilir — asla ortak ya da herkese açık bir registry'ye değil.
  • Uygulama oluşturulur ya da güncellenir, SSL'li subdomain'inde açılır ve yayına alınır. cdnctl bekler ve canlı URL'i yazdırır.

cdnctl.yaml: önemli alanlar

Bu dosyayı cdnctl init yazar; siz düzenlersiniz, cdnctl her deploy'da okur.

  • name — uygulama adı; ilk deploy'da subdomain'in de tohumudur.
  • port — sunucunuzun dinlediği konteyner portu (tüm arayüzler, localhost değil).
  • healthcheck — platformun yokladığı HTTP yolu; deploy bu yol geçene kadar bekler.
  • method — auto, source, git veya compose; burada anlatılan klasör yolu source'tur.
  • Manifest'in kendisi cdnctl check taramasının dışındadır; kendi değerleri kodunuzla ilgili bir uyarıyı asla susturmaz.
# asgari cdnctl.yaml
name: gorev-takip
port: 3000
healthcheck: /health
method: source

Sınırlar — dürüst küçük yazı

  • Kaynak arşivi: en çok 128 MB. node_modules dışlanınca Node projeleri rahat sığar (.dockerignore'u init yazar).
  • Build süresi: tipik Node/Python uygulamaları için bir dakika dolayı; ağır native build'ler daha uzun sürer.
  • Dockerfile şablonu Node, Python, PHP ve statik siteleri tanır; diğerleri için elle yazılmış Dockerfile gerekir (deploy onu olduğu gibi kullanır).
  • Ödeme panelde kalır: hesapta platform paketi yoksa deploy satın alma bağlantısıyla durur; ödemeden sonra cdnctl init --wait kaldığı yerden devam eder.

Sorun giderme: gerçekten yaşadığımız hatalar

Her satır canlı koşulardan gerçek bir hata ve işe yarayan çözümü.

  • Deploy'dan hemen sonra konteyner ERR_DLOPEN_FAILED ile çökme döngüsünde — imajda makinenizden kopyalanmış node_modules var (yanlış platform için derlenmiş native modüller). Çözüm: node_modules'ı .dockerignore'a ekleyin, npm install build içinde çalışsın. cdnctl check bunu yüklemeden önce işaretler.
  • İlk deploy'da build failed — cdnctl deploy'un yazdırdığı build logunu okuyun; node_modules dışında en sık neden lokalde olup package.json/requirements'ta olmayan bağımlılıktır.
  • Create sonrası uygulama stopped görünüyor — cdnctl deploy'u yeniden çalıştırın (0.18.0+ rollout'u kendisi tetikler; eski sürümler açık deploy istiyordu).
  • Build başarılı ama site ulaşılmaz — sunucu 127.0.0.1'e ya da cdnctl.yaml'dakinden farklı bir porta bağlanıyor. 0.0.0.0'a ve bildirilen porta bağlanın; localhost bağlanmasını check yakalar.
  • Healthcheck hiç geçmiyor — yol 200 dönmüyor ya da uygulamanın açılması uzun sürüyor; yolu önce lokalde doğrulayın.

Komutlar, uçtan uca

cdnctl init          # projeyi tespit et, cdnctl.yaml + Dockerfile yaz
cdnctl check         # lokal ön kontrol: hatalar durdurur, uyarılar bilgilendirir
cdnctl deploy        # paketle → yükle → build → canlı URL
cdnctl container apps logs --app <app_uuid> --tail 100   # çalışma zamanı logları
cdnctl deploy-token create --name "agent"   # AI agentlar için kısıtlı token