Docker ile Geliştirme Ortamı Kurma: Sıfırdan Rehber
Docker ile izole ve tekrarlanabilir geliştirme ortamı kurun. Dockerfile yazımı, docker-compose yapılandırması ve volume yönetimini adım adım detaylı öğrenin.
Can Kaya
Güvenlik Uzmanı
"Benim bilgisayarımda çalışıyor" cümlesi yazılım geliştirmenin en bilinen sorunudur. Docker geliştirme ortamı kurarak bu sorunu tamamen ortadan kaldırabilirsiniz. Docker, uygulamanızı ve tüm bağımlılıklarını izole container'larda çalıştırarak her ortamda aynı sonucu garanti eder. Bu rehberde Dockerfile yazımı, docker-compose yapılandırması ve volume yönetimini sıfırdan anlatıyoruz.
Docker Nedir ve Neden Kullanmalısınız?
Docker, uygulamaları container adı verilen hafif, izole ortamlarda çalıştıran bir platformdur. Sanal makinelerden farklı olarak container'lar işletim sistemi çekirdeğini paylaşır ve milisaniyeler içinde başlar. Bu sayede geliştirme, test ve production ortamları arasında tutarlılık sağlanır.
Docker vs Sanal Makine
| Özellik | Docker Container | Sanal Makine |
|---|---|---|
| Başlatma Süresi | Milisaniyeler | Dakikalar |
| Kaynak Kullanımı | Düşük (MB) | Yüksek (GB) |
| İzolasyon | Process düzeyinde | Donanım düzeyinde |
| Taşınabilirlik | Çok yüksek | Orta |
| Performans | Native'e yakın | %5-20 kayıp |
Dockerfile Yazımı
Dockerfile, container image'ınızı tanımlayan bir metin dosyasıdır. Her satır bir katman oluşturur ve Docker bu katmanları cache'ler. İyi yazılmış bir Dockerfile hem build süresini kısaltır hem image boyutunu küçültür.
Multi-Stage Build
Multi-stage build ile derleme bağımlılıklarını final image'dan ayırabilirsiniz. Örneğin Node.js uygulamasında build aşamasında node_modules kullanılır ancak production image'a yalnızca derlenmiş dosyalar kopyalanır. Bu teknik image boyutunu yüzde 60-80 azaltır.
💡 İpucu: Dockerfile'da COPY package*.json ./ komutunu COPY . . komutundan önce yazın ve RUN npm install arasına koyun. Bu sayede kaynak kod değiştiğinde npm install cache'den çalışır ve build süresi kısalır.
Docker Compose ile Çoklu Servis
Docker Compose, birden fazla container'ı tek bir YAML dosyasıyla tanımlamanızı ve yönetmenizi sağlar. Web sunucusu, veritabanı, Redis cache ve mesaj kuyruğu gibi servisleri tek komutla başlatabilirsiniz.
Geliştirme ortamınızda docker-compose.yml dosyası ile tüm bağımlılıkları tanımlayın. Yeni bir ekip üyesi docker-compose up komutuyla dakikalar içinde çalışır duruma gelir. Hosted Cloud bulut sunucuları Docker ve Docker Compose'u destekler.
⚠️ Önemli: Docker volume'larını doğru yapılandırın. Veritabanı verilerini volume olmadan çalıştırırsanız container silindiğinde tüm veriler kaybolur. Named volume veya bind mount kullanarak verileri kalıcı hale getirin.
Sıkça Sorulan Sorular
Docker öğrenmek ne kadar sürer?
Temel kavramları (image, container, Dockerfile) 1-2 günde öğrenebilirsiniz. Docker Compose ve networking gibi ileri konular 1-2 hafta pratik gerektirir. Production kullanımı için 1-2 ay deneyim önerilir.
Docker geliştirme ortamı performansı etkiler mi?
Linux'ta Docker native performansa çok yakın çalışır. macOS ve Windows'ta Docker Desktop hafif bir performans kaybı yaratabilir ancak günlük geliştirme için ihmal edilebilir düzeydedir.
Docker ile Kubernetes arasındaki fark nedir?
Docker tek bir makinede container çalıştırır. Kubernetes ise birden fazla makinede container'ları orkestre eder — ölçekleme, yük dengeleme ve otomatik kurtarma sağlar. Geliştirme için Docker, production için Kubernetes kullanılır.
Sonuç
Docker geliştirme ortamı kurarak "benim bilgisayarımda çalışıyor" sorununu ortadan kaldırın. Dockerfile ile tekrarlanabilir image'lar oluşturun, Docker Compose ile çoklu servisleri yönetin ve volume'larla verileri kalıcı hale getirin. Docker, modern yazılım geliştirmenin vazgeçilmez aracıdır.
Docker İçin Güçlü Sunucu Altyapısı
Hosted Cloud bulut sunucuları ile Docker container'larınızı yüksek performansla çalıştırın.
Bulut Sunucu Planlarını İncele →Can Kaya
Güvenlik Uzmanı
Siber güvenlik, DDoS koruması ve sunucu sertleştirme konularında içerikler üretmektedir. CISSP sertifikalı güvenlik uzmanı.
Yorumlar yakında