.NET Core için Docker Konteynerizasyonu: Geliştirme’den Üretime

Hakan Güzel
2 min readSep 7, 2024

--

Docker, .NET Core uygulamalarının geliştirilmesi, test edilmesi ve dağıtılması süreçlerini kolaylaştırarak, uygulamaların her ortamda tutarlı şekilde çalışmasını sağlar. Bu yazıda, .NET Core uygulamalarınızı Docker konteynerlerinde nasıl geliştireceğiniz, dağıtacağınız ve yöneteceğiniz üzerine adım adım bir rehber sunacağız. Dockerfile yapılandırmaları, en iyi pratikler ve özellikle mikro hizmetler ile konteynerizasyon kullanarak uygulamalarınızın ölçeklenmesi ve yönetilmesi üzerine odaklanacağız.

1. Docker ve .NET Core İlişkisi

Docker, uygulamalarınızı hızlı bir şekilde paketlemenize ve çeşitli ortamlarda sorunsuz bir şekilde çalıştırmanıza olanak tanır. .NET Core, platformlar arası destek sunan hafif ve modüler bir framework olduğundan Docker ile mükemmel uyumludur. Konteynerizasyon, .NET Core uygulamalarının geliştirme sürecini standartlaştırır ve DevOps akışlarını iyileştirir.

2. Dockerfile Oluşturma

Her Docker konteyneri, bir Dockerfile ile başlar. Dockerfile, uygulamanızın nasıl inşa edileceğini ve çalıştırılacağını tanımlayan bir metin dosyasıdır.

  • Dockerfile Temel Yapılandırması:
# .NET Core SDK'yı kullanarak uygulamanızı inşa edin
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY ["MyApp/MyApp.csproj", "MyApp/"]
RUN dotnet restore "MyApp/MyApp.csproj"

# Uygulama dosyalarını kopyalayın ve inşa edin
COPY . .
WORKDIR "/src/MyApp"
RUN dotnet build "MyApp.csproj" -c Release -o /app/build

# Uygulamayı yayınlayın
FROM build AS publish
RUN dotnet publish "MyApp.csproj" -c Release -o /app/publish

# .NET Core Runtime ile uygulamayı çalıştırın
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]

3. Docker Image’ını Oluşturma ve Çalıştırma

Oluşturduğunuz Dockerfile ile bir Docker image’ı oluşturabilir ve bu image’dan bir konteyner başlatabilirsiniz.

  • Image Oluşturma:
docker build -t myapp .
  • Konteyner Çalıştırma:
docker run -d -p 8080:80 --name my_running_app myapp

4. Mikro Hizmetler ve Docker

Mikro hizmetler mimarisi, .NET Core uygulamalarının ölçeklenmesi ve yönetilmesinde önemli bir role sahiptir. Docker, bu mimariyi destekleyerek her mikro hizmetin bağımsız olarak geliştirilmesini, güncellenmesini ve ölçeklenmesini kolaylaştırır.

  • Docker Compose ile Mikro Hizmetler Yönetimi: Docker Compose, birden fazla konteyneri yönetmek için kullanılır. docker-compose.yml dosyası, bir uygulamanın tüm servislerini tanımlar.
version: '3.8'
services:
web:
image: webapp
build:
context: .
dockerfile: WebApp/Dockerfile
ports:
- "5000:80"
api:
image: apiapp
build:
context: .
dockerfile: APIApp/Dockerfile
ports:
- "5001:80"

5. En İyi Pratikler

  • Küçük Base Image’lar Kullanın: Uygulamanızın başlangıç süresini ve güvenlik yüzeyini azaltmak için mümkün olduğunca minimal base image’lar kullanın.
  • Çok Aşamalı İnşalar: İnşa sürecini optimize etmek için çok aşamalı inşaları kullanın. Bu, sadece gereken dosyaların son image’a dahil edilmesini sağlar.
  • Güvenlik Taramaları: Konteynerlerinizin güvenliğini sağlamak için düzenli olarak güvenlik taramaları yapın.

Sonuç

.NET Core ve Docker’ın birleşimi, geliştiricilere güçlü, esnek ve ölçeklenebilir uygulama geliştirme ortamları sunar. Bu rehber, .NET Core uygulamalarınızı Docker kullanarak nasıl geliştireceğiniz, test edeceğiniz ve dağıtacağınız konusunda temel bilgiler sağlamaktadır. Docker ve .NET Core ile mikro hizmetler mimarisi, modern yazılım geliştirme dünyasında vazgeçilmez bir ikili haline gelmiştir.

--

--