Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
9m 57s
Containerlar güçlü bir araçtır, ancak birçok geliştirici için bir C# uygulamasını bir container içerisine koyma fikri bunaltıcı gelebilir. Bir Dockerfile oluşturmak ve bağımlılıkları elle yönetmek karmaşık olabilir. Ancak, Tim Corey'nin videosunda açıkladığı gibi, .NET CLI bu süreci basitleştirir ve geliştiricilerin uygulamalarını bir Dockerfile'e ihtiyaç duymadan konteynerleştirmesine olanak tanır.
Bu makalede, bir C# uygulamasını Tim'in ".NET CLI ile C# Uygulamanızı Kolayca Konteynerleştirin" videosundaki adım adım yaklaşımı kullanarak nasıl konteynerleştirebileceğimize daha yakından bakacağız. Tim'in rehberliğini takip ederek, bir .NET uygulamasının Docker konteynerine zahmetsizce nasıl yayımlanacağını anlayacağız.
Videonun başında Tim, konteynerleştirmenin gerekliliğini açıklar. Kapsayıcılar harika bir araç olmakla birlikte, bir Dockerfile oluşturma ve doğru şekilde yapılandırma sürecinin karmaşık olabileceğini vurgulamaktadır.
Tim, elle bir Dockerfile oluşturmaktansa, .NET CLI kullanarak daha kolay bir yaklaşım sunar. Bu yöntem, geliştiricilerin Dockerfile'i elle yazmadan bir konteyner uygulaması oluşturmalarına olanak tanır.
Tim ayrıca bu videonun, teknik konulara hızlı ve etkili girişlere odaklanan 10 dakikalık eğitim serisinin bir parçası olduğunu açıklıyor.
Tim, örnek olarak minimal bir Web API uygulaması kullanarak başlar. Uygulama, bazı verileri döndüren /messages adlı tek bir uç noktayı içerir.
Uygulamanın containerleşme öncesi davranışını göstermek için, Tim onu yerel olarak çalıştırır. /messages uç noktasına erişerek, konteyner dışında doğru çalıştığını onaylıyor.
Konteynerleştirmeye başlamadan önce şunları da kontrol eder:
Docker, bilgisayarına kurulu ve çalışıyor.
Bu, yeni bir konteyner oluşturulduğunda değişiklikleri net bir şekilde görebilmemizi sağlar.
Uygulamayı konteynerleştirmek için Tim, proje dizininde komut satırına geçer. Daha sonra şu komutu çalıştırır:
Tim, komutun her bölümünü ayrıntılı olarak açıklar:
-o:Linux → Uygulamayı Linux tabanlı bir konteyner için yayınlar.-a:x64 → Mimarinin 64-bit olduğunu belirtir.-p:PublishProfile=DefaultContainer → Varsayılan konteyner ayarlarını kullanır.-c:Release → Daha iyi performans için uygulamayı yayın modunda yayınlar.Tim, Windows konteynerlerinin genellikle .NET Framework uygulamaları için bir köprü görevi gördüğü için Linux konteynerlerinin tercih edildiğini vurgular.
Yayınlama komutu yürütüldüğünde, Tim, .NET CLI'nin gerekli yapılandırmaları otomatik olarak belirleyeceğini ve her şeyi bir konteynere paketleyeceğini açıklar. Şu noktaları belirtir:
Yayınladıktan sonra, Docker Desktop'u kontrol eder ve yeni konteyner imajı background-demo'nin oluşturulduğunu onaylar. İlk konteyner boyutu 221 MB'dir.
Tim, izleyicilere bu boyutun daha sonra küçültülebileceğini açıklar.
Konteynerleştirilmiş uygulamayı test etmek için Tim, Docker Desktop'tan doğrudan konteyneri başlatır. Henüz çalışan konteyner olmadığından, 'Çalıştır' butonuna tıklar ve isteğe bağlı bir ayar yapar:
Başlattıktan sonra, bir web tarayıcısı kullanarak uygulamaya erişir. Başlangıçta, kök URL'ye erişmek 404 hatası verir ancak /messages'ya gitmek beklenen verileri başarıyla görüntüler.
Tim, önemli bir noktayı vurgular:
Ayrıca, uygulamanın yayımlama modunda yayımlandığını ve Swagger UI'nin varsayılan olarak devre dışı olduğunu belirtir.
Bu noktada, varsayılan konteyner boyutu 221 MB'dir ve Tim bunu oldukça büyük olarak kabul eder. Boyutu küçültmek için, daha hafif bir temel görüntü tanıtır.
Program.cs dosyasını değiştirerek konteyner ailesinin, daha küçük Ubuntu tabanlı bir imaj olan jammy-chiseled olarak ayarlanmasını sağlar:
builder.Services.Configure<ContainerOptions>(options => options.ContainerFamily = "jammy-chiseled");builder.Services.Configure(Of ContainerOptions)(Sub(options) options.ContainerFamily = "jammy-chiseled")Daha sonra yayımlama komutunu tekrar çalıştırır ve konteyneri yeniden oluşturduktan sonra görüntü boyutunu tekrar kontrol eder.
Yeni görüntü boyutu 113 MB'dir—yaklaşık 100 MB'lık bir azalma! Daha küçük boyuta rağmen, uygulama aynı şekilde çalışır.
Tim, çalışma alanını temizlemek için konteyneri silmeyi gösterir. Ancak Docker görüntüsü hala mevcuttur bu nedenle gerekirse konteyner yeniden oluşturulabilir.
Konteynerin bir kez oluşturulduktan sonra şunlar için kullanılabileceğini vurgular:
Tim, .NET CLI'yi kullanmanın konteynerleştirmenin temel avantajlarını pekiştirecek şekilde videoyu toparlar:
jammy-chiseled kullanarak konteyner boyutunu azaltır.Tim'in .NET CLI ile C# uygulamalarını konteynerleştirme yaklaşımı basit, hızlı ve etkilidir. Onun yöntemini izleyerek, geliştiriciler geniş çapta Docker bilgisine ihtiyaç duymadan konteynerler oluşturabilir ve optimize edebilir.
Linux konteynerlerinin, optimize edilmiş temel görüntülerin ve baştan sona yayımlama komutlarının kullanılması, geliştiricilerin minimum çaba ile uygulamalarını verimli bir şekilde konteynerleştirmelerine olanak tanır.
Daha derinlemesine bilgi almak istiyorsanız, Tim Corey'nin videosunu mutlaka kontrol edin. Tüm sürecin net, adım adım bir açıklamasını sunar.
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy