Docker ile Uygulama Paketleme

Uygulamalarınızı Docker container'larına paketleyerek her ortamda tutarlı çalışmasını sağlayın.

Elif Gider3 Ekim 2025
#docker#container#devops#deployment#paketleme

Docker ile Uygulama Paketleme

Docker, uygulamalarınızı ve bağımlılıklarınızı hafif, taşınabilir container'lara paketlemenizi sağlar. Bu sayede "bende çalışıyordu" sorununu ortadan kaldırır ve uygulamanızı her ortamda tutarlı şekilde çalıştırırsınız.


🎯 Docker Nedir? Günlük Hayattan Örnekler

📦 Container = Paketlenmiş Kutu

Düşünün ki bir arkadaşınıza yemek tarifi gönderiyorsunuz. Sadece tarifi değil, tüm malzemeleri de paketleyip gönderiyorsunuz:

  • Tarif (kodunuz)
  • Malzemeler (kütüphaneler, araçlar)
  • Pişirme süresi (çalışma ortamı)
  • Sıcaklık (sistem ayarları)

Arkadaşınız paketi açtığında, aynen sizin yaptığınız gibi yemek yapabilir!

🏠 Image = Tarif Kitabı

Docker Image'ı, yemek tarifinizin yazılı olduğu kitap gibidir:

  • Herkes aynı kitabı kullanabilir
  • Kitap her yerde aynı sonucu verir
  • Yeni tarifler ekleyebilirsiniz

🚚 Container = Pişirilen Yemek

Container ise tarifi kullanarak pişirdiğiniz yemektir:

  • Tarif kitabından (Image) yapılır
  • Her seferinde aynı lezzette olur
  • İstediğiniz zaman yapabilirsiniz

🤔 Neden Docker Kullanmalıyız?

"Bende Çalışıyordu" Sorunu

Senaryo: Arkadaşınızla aynı projeyi geliştiriyorsunuz.

Sorun:

  • Sizde Node.js 18 var, arkadaşınızda 16
  • Sizde Windows var, arkadaşınızda Mac
  • Sizde farklı kütüphaneler yüklü

Sonuç: "Bende çalışıyordu ama arkadaşımda çalışmıyor!"

Docker Çözümü:

  • Her ikinizde de aynı container çalışır
  • Aynı Node.js versiyonu
  • Aynı kütüphaneler
  • Aynı sistem ayarları

🏢 Gerçek Hayat Örnekleri

1. Web Sitesi Deployment

Önceki Durum:

  • Sunucuda Node.js kurulumu
  • Kütüphane versiyonları uyumsuzluğu
  • "Production'da çalışmıyor" sorunları

Docker ile:

  • Container'ı her yere taşıyabilirsiniz
  • Aynı ortam her yerde
  • Hızlı ve güvenli deployment

2. Ekip Çalışması

Önceki Durum:

  • Herkes farklı sistem kurulumu yapıyor
  • "Benim bilgisayarımda çalışıyor" durumları
  • Zaman kaybı

Docker ile:

  • Tek komutla herkes aynı ortamı kuruyor
  • Tutarlı geliştirme ortamı
  • Hızlı onboarding

3. Mikroservis Mimarisi

Örnek: E-ticaret sitesi

  • Kullanıcı servisi (Node.js)
  • Ürün servisi (Python)
  • Ödeme servisi (Java)
  • Veritabanı (PostgreSQL)

Her servis ayrı container'da çalışır ve birbirleriyle konuşur.


🛠️ Temel Docker Kavramları

Dockerfile = Tarif

# Hangi malzemeleri kullanacağız?
FROM node:18

# Nerede çalışacağız?
WORKDIR /app

# Hangi malzemeleri ekleyeceğiz?
COPY package.json ./
RUN npm install

# Tarifi ekleyelim
COPY . .

# Hangi portta servis edeceğiz?
EXPOSE 3000

# Nasıl başlatacağız?
CMD ["npm", "start"]

Image = Hazır Tarif Kitabı

# Tarif kitabını oluştur
docker build -t my-app .

# Tarif kitabını listele
docker images

Container = Pişirilen Yemek

# Yemeği pişir (container başlat)
docker run -p 3000:3000 my-app

# Pişen yemekleri listele
docker ps

# Yemeği durdur
docker stop container-id

🚀 Pratik Örnek: Basit Web Uygulaması

1. Basit Node.js Uygulaması

// app.js
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Merhaba Docker!');
});

app.listen(3000, () => {
  console.log('Uygulama çalışıyor!');
});

2. Dockerfile

FROM node:18
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]

3. Çalıştırma

# Image oluştur
docker build -t merhaba-docker .

# Container başlat
docker run -p 3000:3000 merhaba-docker

Artık http://localhost:3000 adresinde uygulamanız çalışıyor!


🎯 Docker'ın Avantajları

1. Tutarlılık

  • Geliştirme, test ve production aynı ortam
  • "Bende çalışıyordu" sorunu yok

2. Taşınabilirlik

  • Herhangi bir sunucuda çalışır
  • Cloud'a kolayca taşınabilir

3. Ölçeklenebilirlik

  • İhtiyaç duyduğunuzda container'ları çoğaltabilirsiniz
  • Yük dağıtımı kolay

4. İzolasyon

  • Her uygulama kendi ortamında çalışır
  • Birbirlerini etkilemez

5. Hızlı Deployment

  • Saniyeler içinde yeni sürüm yayınlayabilirsiniz
  • Rollback kolay

🎯 Sonuç

Docker, uygulamalarınızı paketleyip taşınabilir hale getiren bir araçtır. Tıpkı yemek tarifini malzemeleriyle birlikte paketleyip göndermek gibi!

Temel Faydalar:

  • Tutarlılık: Her yerde aynı çalışır
  • Taşınabilirlik: Kolayca taşınabilir
  • Hız: Hızlı kurulum ve deployment
  • Güvenlik: İzole ortamlar
  • Ölçeklenebilirlik: İhtiyaç duyduğunuzda büyüyebilir

Docker öğrenmeye başlamak için basit bir web uygulaması ile başlayın. Zamanla daha karmaşık projelerde kullanmaya başlayacaksınız!


📱 Bu Yazıyı Paylaş

Bu yazıyı beğendiyseniz, arkadaşlarınızla paylaşabilirsiniz: