Skip to main content
Web Geliştirme

Docker ile Web Uygulaması Containerization ve Deployment

Mart 29, 2026 2 dk okuma 5 views Raw
Docker container deployment sunucu
İçindekiler

Docker ile Web Uygulaması Containerization ve Deployment

Docker, yazılım geliştirme dünyasında son yılların en dönüştürücü teknolojilerinden biridir. Uygulamanın her ortamda aynı şekilde çalışmasını garanti eden container teknolojisi, hem geliştirme süreçlerini hem de operasyonel yönetimi kökten değiştirmiştir.

Docker Neden Bu Kadar Önemli?

Geleneksel yaklaşımda sıkça duyulan cümle vardır: Bende çalışıyordu. Docker bu problemi ortadan kaldırır. Uygulama ve tüm bağımlılıkları tek bir image içine paketlenir; geliştirici makinesi, test sunucusu ve production ortamı aynı container'ı çalıştırır.

Temel Dockerfile Yazımı

Bir ASP.NET Core uygulaması için çok aşamalı Dockerfile örneği:

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY *.csproj .
RUN dotnet restore
COPY . .
RUN dotnet publish -c Release -o /app

FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app .
EXPOSE 80
ENTRYPOINT ["dotnet", "MyApp.dll"]

Docker Compose ile Çoklu Servis Yönetimi

Gerçek dünya uygulamaları genellikle web sunucusu, veritabanı ve cache gibi birden fazla servisten oluşur. Docker Compose bu servisleri tek bir YAML dosyasıyla tanımlar ve yönetir.

services:
  web:
    build: .
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: mariadb:11
    environment:
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - db_data:/var/lib/mysql
volumes:
  db_data:

Volume Yönetimi ve Veri Kalıcılığı

Container'lar varsayılan olarak stateless'tır; yeniden başlatıldığında veri kaybolur. Volume'lar bu sorunu çözer. Named volume'lar, bind mount'lara kıyasla production ortamlarında daha güvenli ve taşınabilirdir.

Nginx ile Reverse Proxy

Production ortamlarında web uygulamasının önüne Nginx reverse proxy konulması, SSL sonlandırma, statik dosya sunumu ve yük dengeleme için standarttır.

Production Best Practices

  • Non-root kullanıcı ile container çalıştırma
  • Health check tanımlama: HEALTHCHECK CMD curl -f http://localhost/health
  • Minimal base image kullanımı (alpine veya distroless)
  • Secrets'ı environment variable ile değil, Docker Secrets ile yönetme
  • Image tag'lerini latest yerine belirli versiyon ile sabitleme

Sonuç

Docker, modern yazılım geliştirme süreçlerinin ayrılmaz bir parçasıdır. Containerization ile deployment süreçleri standartlaşır, ortam tutarsızlıkları ortadan kalkar ve ölçeklendirme kolaylaşır. Ekolsoft projelerinde Docker ve docker-compose, tüm deployment pipeline'larının temelini oluşturmaktadır.

Bu yazıyı paylaş