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önMimari: 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