Docker ile Konteyner Dünyasına Giriş: Sıfırdan Uygulamalarınızı Taşıyın

Docker ile Konteyner Dünyasına Giriş: Sıfırdan Uygulamalarınızı Taşıyın

CodeMareFi'ye Hoş Geldiniz!Yazılım dünyasındaki en güncel ve işlevsel kodları sizlerle paylaşmaya devam ediyoruz. Bu makalemizde, projelerinizde zaman kazanmanızı sağlayacak ve sisteminizi bir üst seviyeye taşıyacak önemli bir konuyu detaylıca ele alacağız. Hazırladığımız bu rehber, hem yeni başlayanlar hem de profesyonel geliştiriciler için özenle derlenmiştir. Aşağıdaki adımları ve kod bloklarını dikkatlice uygulayarak projenize sorunsuz bir entegrasyon sağlayabilirsiniz. Hazırsanız, detaylara geçelim.

Docker Nedir ve Neden Kullanmalıyız?

"Benim bilgisayarımda çalışıyor ama sunucuda çalışmıyor!" cümlesi, yazılım dünyasında çok sık duyulan bir şikâyettir. Docker, tam da bu sorunu ortadan kaldırmak için doğmuştur. Docker; uygulamalarınızı, tüm bağımlılıklarıyla birlikte bağımsız, taşınabilir paketler (konteyner) içinde çalıştırmanıza olanak tanır.

Sanal Makine vs Konteyner

Geleneksel sanal makinelerde her VM için tam bir işletim sistemi kurulumu gerekirken, Docker konteynerleri ana makinenin çekirdeğini paylaşır. Bu sayede çok daha hafif, hızlı ve verimlidirler.

ÖzellikSanal MakineDocker Konteyner
Başlangıç SüresiDakikalarSaniyeler
Disk BoyutuGB'larcaMB'larca
İzolasyonTam OS izolasyonuProses izolasyonu
TaşınabilirlikOrtaMükemmel

Temel Docker Kavramları

  • Image (Görüntü): Uygulamanızın "blueprint"i. Salt okunur bir şablon.
  • Container (Konteyner): Image'ın çalışan bir örneği.
  • Dockerfile: Image'ı nasıl oluşturacağınızı tanımlayan talimat dosyası.
  • Docker Hub: Hazır image'ları bulabileceğiniz bulut deposu.
  • Docker Compose: Birden fazla konteyneri koordineli şekilde yönetme aracı.

İlk Dockerfile'ınızı Yazın

Basit bir Node.js uygulamasını Docker ile paketleyelim:

# Temel image olarak resmi Node.js 20 Alpine kullan (en hafif versiyon)
FROM node:20-alpine

# Çalışma dizinini ayarla
WORKDIR /app

# Bağımlılık dosyalarını kopyala
COPY package*.json ./

# Bağımlılıkları yükle (sadece üretim bağımlılıkları)
RUN npm ci --only=production

# Uygulama kaynak kodunu kopyala
COPY . .

# Uygulamanın hangi portu dinlediğini belirt (dokümantasyon amaçlı)
EXPOSE 3000

# Konteyneri başlatma komutu
CMD ["node", "index.js"]

Docker Compose ile Çoklu Servis

Gerçek projelerde genellikle birden fazla servise ihtiyaç duyarsınız (uygulama sunucusu + veritabanı + cache). Docker Compose tam da bunun için var:

# docker-compose.yml
version: '3.9'

services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgresql://user:password@db:5432/mydb
    depends_on:
      - db
      - redis

  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydb
    volumes:
      - postgres_data:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

volumes:
  postgres_data:

Bu yapıyı docker compose up -d komutuyla ayağa kaldırdığınızda uygulamanız, PostgreSQL veritabanınız ve Redis cache'iniz tek seferde çalışmaya başlar.

💡 İpucu

Docker Desktop'u yükledikten sonra docker run hello-world komutuyla kurulumunuzu test edebilirsiniz. Her şey yolundaysa "Hello from Docker!" mesajı görürsünüz.

Sonuç ve Değerlendirme

Bu makalemizde paylaştığımız kodlar ve teknik bilgiler, sisteminizin performansını artıracak ve sizlere daha esnek bir geliştirme imkanı sunacaktır. CodeMareFi üzerinden paylaştığımız tüm içerikler, güncel yazılım standartlarına uygun olarak optimize edilmiş olup, projelerinizde güvenle kullanabileceğiniz şekilde hazırlanmıştır.

Eğer kurulum sırasında herhangi bir sorunla karşılaşırsanız, kod çalışmazsa veya sisteme ekstra özellikler eklemek isterseniz, iletişim kanallarımızdan ya da Discord sunucumuza katılarak diğer geliştirici arkadaşlarımızdan anında destek alabilirsiniz. Daha fazla ücretsiz kod paylaşımı, web tasarım rehberleri ve teknoloji makaleleri için sitemizi takipte kalmayı unutmayın. İyi kodlamalar!

0 Yorum

YORUM YAPMAK İÇİN SİSTEME SIZMANIZ GEREKİYOR

Lütfen yukarıdaki butonu kullanarak giriş yapın veya kimlik oluşturun.

Yorumlar yükleniyor...