Bir web uygulamasını, bir PostgreSQL veritabanını ve küçük bir Redis önbelleğini canlıya almak... Kağıt üzerinde yazılım dünyasının en temel, en sade mimarisidir, değil mi?
Ancak bugün modern bulut platformlarında (Heroku, Render, Vercel, AWS vb.) bu üçlüyü yan yana koyup biraz trafik almaya başladığında, birkaç gigabayt RAM artışı, otomatik yedekleme ve ek ekip üyesi tanımlamasıyla birlikte ay sonunda karşına 150 ile 300 dolar arasında değişen bir fatura çıkabiliyor.
Üstelik ödediğin bu paranın büyük kısmı işlemci gücüne veya disk hızına gitmiyor. Biz buna yazılım dünyasında "Bulut Vergisi" (Cloud Tax) diyoruz: Yani sadece bilgisayarında git push yazdığında kodunun zahmetsizce yayına girmesi konforuna ödenen bedel.
Peki ayda sadece 5 dolarlık saf bir Linux sunucu (VPS) kiralayıp, sunucuyu yoran hiçbir ağır yönetim paneli kurmadan, tıpkı Heroku veya Vercel kullanıyormuş gibi tek bir git push komutuyla sıfır kesintili (Zero-Downtime) yayın yapabileceğini biliyor muydun? Gel, açık kaynak dünyasının en zarif mühendislik araçlarından biri olan Dokku'nun kaputunun altında nasıl çalıştığını inceleyelim.
1. Dokku Tam Olarak Nedir? (Neden Web Paneli Yok?)
Dokku kendisini "Bugüne kadar gördüğünüz en küçük PaaS (Platform as a Service) uygulaması" olarak tanımlar. En yalın ifadeyle; kiraladığın standart bir Ubuntu veya Debian sunucunun üzerine kurulan, Docker ve Nginx tabanlı kişisel bir mini-Heroku'dur.
Dokku'yu bugün popüler olan diğer sunucu yönetim araçlarından ayıran çok ince bir mühendislik felsefesi vardır:
- Pek çok modern açık kaynak panel, sunucuyu yönetebilmen için arka planda kendi web arayüzünü, kendi veritabanını ve kendi kuyruk servislerini çalıştırır. Daha sen ilk uygulamanı bile yayınlamadan sunucunun 1.5 – 2 GB RAM'i sadece o yönetim panelini ayakta tutmak için harcanır.
- Dokku'nun varsayılan olarak bir web arayüzü bile yoktur. Onun yerine Linux dünyasının yıllardır rüştünü ispatlamış 4 temel yapı taşını birbirine bağlar: SSH, Git, Docker ve Nginx.
- Sen yeni bir sürüm göndermediğin sürece Dokku arka planda neredeyse sıfır bellek tüketir. Sadece sen kapıyı çaldığında uyanır, görevini yapar ve kenara çekilir.
2. Kaputun Altı: git push dokku main Yazdığında Ne Olur?
Sunucuna Dokku kurduktan sonra kendi bilgisayarındaki projede sadece bir Git uzak sunucusu (remote) tanımlarsın:
git remote add dokku dokku@sunucu-ip-adresin:uygulama-adi
git push dokku mainKlavyede Enter'a bastığın o saniyede sunucuda 4 aşamalı muazzam bir otomasyon başlar:
[Bilgisayarın: git push] ──(SSH Tüneli)──▶ [1. sshcommand & Git Kancası]
│
▼
[2. İnşa (Build) Aşaması]
(Dockerfile VEYA Otomatik Buildpacks)
│
▼
[3. Sıfır Kesinti (Zero-Downtime) Testi]
(v1 çalışırken v2 açılır ➔ Healthcheck 200 OK)
│
▼
[4. Nginx Rota Değişimi]
(Trafik milisaniyede v2'ye akar ➔ v1 kapatılır)1. ve 2. Adım: SSH Yakalama ve Otomatik İnşa (Dockerfile & Buildpacks)
Bilgisayarınla sunucu arasında standart bir SSH tüneli açılır. Dokku gelen kodu teslim alır ve projenin kök dizinine bakar:
- Eğer projende kendi yazdığın bir
Dockerfilevarsa, Dokku hiçbir şeye karışmaz ve doğrudan seninDockerfiledosyanı kullanarak imajı inşa eder. - Eğer projende
Dockerfileyoksa bile sorun değildir! Dokku içindeki Buildpack (Herokuish) motoru sayesinde dizindepackage.jsongörürse Node.js,requirements.txtgörürse Python,composer.jsongörürse PHP/Laravel,go.modgörürse Go veya.csprojgörürse .NET projesi olduğunu kendisi anlar ve üretime hazır izole bir Docker konteyneri oluşturur.
3. ve 4. Adım: Gerçek Zero-Downtime Deployment (Sıfır Kesinti)
Kendi sunucunda klasik yöntemle docker compose restart yaptığında, yeni konteyner ayağa kalkana kadar geçen 10-15 saniye boyunca sitene giren tüm kullanıcılar 502 Bad Gateway hatası görür.
Dokku buna asla izin vermez:
- Halihazırda çalışan eski sürüm konteynerine (
v1) hiç dokunmaz; kullanıcılar kesintisiz hizmet almaya devam eder. - Yeni sürümün konteynerini (
v2) hemen yan tarafta paralel olarak ayağa kaldırır. - Yeni konteynerin içine Healthcheck (Sağlık Kontrolü) istekleri atar; uygulamanın gerçekten çalıştığından ve veritabanına bağlandığından emin olana kadar bekler.
- Yeni konteyner "Ben hazırım (
200 OK)" cevabını verdiği salisede, ön taraftaki Nginx Reverse Proxy'nin rotasını milisaniyeler içindev1'denv2'ye çevirir ve ancak tüm trafik yeni sürüme aktıktan sonra eski konteyneri sessizce kapatır.
3. Tek Satırla PostgreSQL, Redis, S3 Yedekleme ve Ücretsiz SSL
Gerçek bir backend projesi sadece uygulama kodundan ibaret değildir; veritabanı, önbellek ve HTTPS sertifikası gerekir. Dokku'nun resmi eklenti (plugin) mimarisiyle bunların tamamı tek satırlık komutlarla yönetilir:
# 1. PostgreSQL veritabanı oluştur ve uygulamana bağla
dokku postgres:create prod-db
dokku postgres:link prod-db uygulama-adi
# -> Dokku kapalı bir Docker ağı kurar ve DATABASE_URL değişkenini uygulamana otomatik enjekte eder!
# 2. Veritabanını her gece 03:00'te şifreleyip otomatik olarak S3'e yedekle
dokku postgres:backup-schedule prod-db "0 3 * * *" s3-yedek-kovam
# 3. Alan adın için ücretsiz Let's Encrypt SSL sertifikası al ve otomatik yenilemeyi aç
dokku letsencrypt:enable uygulama-adi
dokku letsencrypt:cron-job --add4. Büyük Karşılaştırma: Dokku vs Coolify vs Kubernetes vs Vercel
Peki hangi senaryoda hangi aracı seçmelisin? İşte adil bir mühendislik karşılaştırması:
| Kriter | Dokku | Coolify / CapRover | Kubernetes (K8s) | Vercel / Render / Heroku |
|---|---|---|---|---|
| Yönetim Şekli | SSH üzerinden CLI & Git | Görsel Web Arayüzü (UI) | kubectl + YAML Manifestleri | Bulut Web Paneli |
| Boşta RAM Tüketimi | ~0 MB (Yok denecek kadar az) | ~1.2 GB – 2 GB RAM | Yüksek (Control Plane yükü) | Bulut Sağlayıcıda |
| Kimler Seçmeli? | Tek VPS'te maksimum performans ve git push sadeliği isteyenler | Her şeyi tarayıcıdan görsel butonlarla yönetmek isteyenler | Onlarca sunuculuk kümesi ve ayrı DevOps ekibi olan dev ölçekli şirketler | Bütçe sınırı olmayan, sunucuyla hiç ilgilenmek istemeyen ekipler |
Bilgi: Mühendislik Özeti: İhtiyacın Kadar Karmaşıklık
İyi mühendislik her zaman en pahalı veya en karmaşık aracı seçmek değildir; elindeki problemi en az hareketli parçayla ve en sade mimariyle çözebilmektir. Bugün geliştirilen SaaS girişimlerinin ve API projelerinin %90'ı için ayda 5-10 dolarlık bir Linux VPS ve Dokku ikilisi, günde yüz binlerce isteği sıfır kesintiyle karşılamak için fazlasıyla yeterlidir.
İlgili İçeriklerimiz
İnteraktif Yol Haritası & Araç
System Design: Milyon Kullanıcıya Ölçeklenmek
Sunucuyu çoğaltmak yetmiyor: büyük bir günde sistemin neden çöktüğünü ve yükün veritabanına ulaşmadan nasıl kesildiğini aşama aşama anlatan System Design haritası.
SQL mi NoSQL mi?
Altı soruya cevap ver, projene hangi tür veritabanının uyduğunu ve nedenini söyleyeyim.
Bunu da oku
- CZTROrtalık Çok Karışık: Backend Geliştirmeye Başlarken Hangi Dil ve Framework Seçilmeli? (2026 Karar Rehberi)
Ortalık Çok Karışık: Backend Geliştirmeye Başlarken Hangi Dil ve Framework Seçilmeli? (2026 Karar Rehberi)
25 Ekim 2026 · 5 dk okuma - CZTR0.1.0 Ne Anlama Gelir? Yazılımda Sürüm Numaralandırma Standartları: SemVer, CalVer ve ZeroVer Rehberi
0.1.0 Ne Anlama Gelir? Yazılımda Sürüm Numaralandırma Standartları: SemVer, CalVer ve ZeroVer Rehberi
25 Ekim 2026 · 5 dk okuma