.NET Core Multi-Stage Build Örneği

Bu örnekte, basit bir .NET Core web uygulaması oluşturacağız ve bunu multi-stage build kullanarak Docker imajı haline getireceğiz. Bu süreç, uygulamanın derlenmesi ve çalıştırılması için farklı aşamalar kullanarak nihai imajın boyutunu küçültmeyi hedefler.


Adım 1: .NET Core Uygulaması Oluşturma

Öncelikle, basit bir .NET Core web uygulaması oluşturun. Aşağıdaki komutları kullanarak yeni bir proje başlatabilirsiniz:

dotnet new webapi -n MyWebApp

cd MyWebApp

komutları ile yeni bir proje oluşturuyoruz

# İlk aşama: Derleme

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build

WORKDIR /src

COPY . .

RUN dotnet restore

RUN dotnet publish -c Release -o /app


# İkinci aşama: Çalıştırma

FROM mcr.microsoft.com/dotnet/aspnet:7.0

WORKDIR /app

COPY --from=build /app .

ENTRYPOINT ["dotnet", "MyWebApp.dll"]

Dockerfile Açıklaması

İlk Aşama (Derleme):


FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build: .NET SDK imajını kullanarak bir derleme aşaması başlatır. Bu imaj, uygulamanın derlenmesi için gerekli tüm araçları içerir.

WORKDIR /src: Çalışma dizinini /src olarak ayarlar.

COPY . .: Proje dosyalarını konteyner içine kopyalar.

RUN dotnet restore: Projenin bağımlılıklarını indirir.

RUN dotnet publish -c Release -o /app: Uygulamayı yayınlar ve derlenmiş dosyaları /app dizinine yerleştirir.

İkinci Aşama (Çalıştırma):


FROM mcr.microsoft.com/dotnet/aspnet:7.0: Daha hafif bir .NET Runtime imajı kullanarak çalıştırma aşaması başlatır. Bu imaj, sadece uygulamanın çalışması için gerekli olan bileşenleri içerir.

WORKDIR /app: Çalışma dizinini /app olarak ayarlar.

COPY --from=build /app .: İlk aşamada derlenen dosyaları bu aşamaya kopyalar.

ENTRYPOINT ["dotnet", "MyWebApp.dll"]: Uygulamayı başlatır.

Adım 3: Docker İmajını Oluşturma ve Çalıştırma

Docker imajını oluşturmak ve çalıştırmak için aşağıdaki komutları kullanın:

docker build -t mywebapp .

docker run -d -p 8080:80 --name mywebapp_container mywebapp

docker build -t mywebapp .: Docker imajını oluşturur ve mywebapp adını verir.

docker run -d -p 8080:80 --name mywebapp_container mywebapp: İmajı çalıştırır ve konteyneri mywebapp_container adıyla başlatır. Uygulama, yerel makinenizdeki 8080 portundan erişilebilir hale gelir.

Sonuç

Bu örnek, .NET Core uygulamanızı multi-stage build kullanarak nasıl daha verimli bir şekilde Docker imajı haline getirebileceğinizi gösterdi. Multi-stage build, gereksiz dosyaları ve bağımlılıkları nihai imajdan çıkararak daha küçük ve güvenli imajlar oluşturmanıza olanak tanır. Bu yöntem, özellikle büyük projelerde dağıtım sürecini optimize etmek için oldukça faydalıdır.

Yorum yapmak için giriş yapmalısınız

Henüz yorum yapılmamış