Son doğrulama: Eylül 2026 · Ubuntu 24.04 test sunucusunda denendi
Hızlı çözüm
Docker Compose kullanımı VPS‘nizde birden fazla container’ı (ör. web sunucusu + önbellek) tek bir YAML dosyasıyla tanımlayıp tek komutla ayağa kaldırmanızı sağlar; container’lar arasındaki ağ ve başlatma sırasını Compose kendi yönetir.
docker-compose.yml dosyası oluşturun.services: altında her container’ı) tanımlayın.docker compose up -d ile tüm servisleri arka planda başlatın.docker compose ps ile hangi container’ın hangi portta çalıştığını doğrulayın.| Panel | Yok — komut satırından (SSH veya konsol) |
|---|---|
| Sistem | VPS/VDS: Ubuntu 24.04 (Docker Engine kurulu olmalı) |
| Yetki | root veya docker grubunda bir kullanıcı |
| Narhost ürünü | VPS Sunucu |
Başlamadan önce
docker-compose-plugin) olarak gelir; ayrı bir kurulum gerekmez, docker compose version ile kontrol edin.Tek bir container’ı docker run ile başlatmak basit bir siteyi ayakta tutar, ama gerçek bir uygulama genelde birden fazla parçadan oluşur: bir web sunucusu, bir veritabanı, bir önbellek katmanı. Bu parçaları elle, tek tek docker run komutlarıyla başlatıp aralarındaki ağı kurmak hem hataya açıktır hem de tekrarlanabilir değildir. Docker Compose kullanımı VPS’te bu sorunu tek bir docker-compose.yml dosyasıyla çözer: hangi container’ların çalışacağı, hangi portları açacağı, hangi ortam değişkenlerini alacağı ve aralarındaki bağımlılık sırası tek dosyada tanımlanır.
Sunucunuzu yeniden kurmanız ya da aynı yapıyı başka bir VPS’e taşımanız gerektiğinde tek yapmanız gereken bu dosyayı kopyalayıp docker compose up -d çalıştırmaktır; container’lar aynı ağ ve bağımlılık sırasıyla yeniden ayağa kalkar. Bu, çok container’lı bir yapıyı elle adım adım kurmaktan çok daha az hataya açık bir yöntemdir. Dosyanın söz dizimi (servisler, ağlar, volumeler) Docker Compose’un resmi dokümantasyonunda tanımlanır; bu kart en sık kullanılan alanları kapsar.

mkdir -p ~/demo-proje && cd ~/demo-proje
docker-compose.yml dosyasını yazın:
services:
web:
image: nginx:alpine
ports:
- "8080:80"
depends_on:
- cache
cache:
image: redis:alpine
expose:
- "6379"
Bu tanım iki servisi kapsar: dışarıya 8080 portundan açılan bir web sunucusu ve yalnızca web servisinin erişebildiği bir önbellek. depends_on cache’in web’den önce başlamasını sağlar.
docker compose version
docker compose up -d
Beklenen sonuç: önce Docker Compose version v2.x ya da üzeri, ardından iki imajın çekilip iki container’ın Created/Started durumuna geçtiğini gösteren satırlar. Test sunucusunda demo-proje-cache-1 ve demo-proje-web-1 bu sırayla oluşturulup başlatıldı.
docker compose ps
curl -sI http://localhost:8080
Beklenen sonuç: ps çıktısında her iki container Up durumunda, web servisinin PORTS sütununda 0.0.0.0:8080->80/tcp görünür; curl ise HTTP/1.1 200 OK döndürür. Test sunucusunda birebir bu sonuç alındı.
docker compose logs --tail=20 cache
Beklenen sonuç: seçtiğiniz servisin (burada cache) son satırlarını gösterir; test sunucusunda Redis’in “Ready to accept connections” satırı bu şekilde görüldü. Diğer alt komutların tam listesi docker compose komut referansında yer alır.
docker compose down
Beklenen sonuç: her iki container ve aralarında kurulan sanal ağ sırayla durdurulup kaldırılır; veriler bir volume tanımlamadıysanız container ile birlikte silinir.
Dikkat
docker compose down yalnızca container ve ağı kaldırır; kalıcı veri tutmak istiyorsanız (ör. veritabanı) docker-compose.yml içinde bir volumes: tanımı kullanın, aksi halde down sonrası veri kaybolur.
Sonuç
docker compose ps her iki servisi de Up durumunda gösteriyor ve tarayıcıdan sunucu IP’nizle :8080 adresini açtığınızda web servisi yanıt veriyorsa Docker Compose kullanımı VPS’te başarıyla tamamlanmış demektir.
docker compose komutu bulunamıyor. Docker Engine eski bir sürümle kurulmuş olabilir; Docker kurulumu kartındaki adımları izleyip docker-compose-plugin paketinin kurulduğundan emin olun.Restarting döngüsünde kalıyor.docker compose logs <servis adı> ile o servisin hata mesajını okuyun; genelde yanlış ortam değişkeni veya eksik bağımlılıktan kaynaklanır.docker-compose.yml‘daki ports: satırının doğru yazıldığından ve sunucunuzda o portu engelleyen bir güvenlik duvarı kuralı olmadığından emin olun./var/lib/docker altında birikir; disk kullanımını denetleme kartındaki adımlarla durumu kontrol edin, ardından docker system prune ile temizleyin.Narhost desteği
Docker Compose kullanımı sırasında container’lar başlamıyorsa destek talebinize sunucunuzun IP adresini, docker-compose.yml içeriğini ve docker compose logs çıktısını ekleyin.
Sonraki adımlar
Evet. Docker Compose, Docker Engine kurulumuyla birlikte gelen docker-compose-plugin paketi üzerinden ücretsiz kullanılır; ayrı bir lisans ya da abonelik gerekmez.
Eski docker-compose ayrı bir Python paketiydi ve artık güncellenmiyor. Güncel Docker sürümlerinde komut docker compose (boşlukla) şeklindedir ve doğrudan Docker CLI’nin bir eklentisidir; bu kart güncel docker compose komutunu kullanır.
Teknik bir üst sınır yoktur; sunucunuzun işlemci ve bellek kapasitesi sınırı belirler. Beş on container’lık yapılar tek docker-compose.yml dosyasında rahatlıkla yönetilir.
Hayır, container’lar restart: unless-stopped gibi bir politika ile tanımlanmışsa Docker servisi başladığında otomatik ayağa kalkar; kalıcı veri için ayrıca volumes: tanımlamanız gerekir.
Bu makale sorununuzu çözdü mü?
Geri bildiriminiz için teşekkürler.
Çözemediniz mi?
Teknik ekibimiz sunucu tarafındaki ayarları sizin için kontrol edebilir. Destek talebinizde alan adınızı ve aldığınız hata metnini paylaşmanız süreci hızlandırır.