ASP.Net Core Uygulaması Docker’da Nasıl Deploy Edilir?

Uygar Keser
inventiv
Published in
4 min readNov 15, 2020

Docker’a Neden İhtiyaç Duyulur ?

ASP.Net Core’un hayatımıza girmesi ile .Net projeleri artık Linux serverlar üzerinde kullanılabilir hale gelmiştir. Bu gelişme ile platformlar arasında oluşan farklılardan dolayı, geliştirdiğimiz uygulamalarda sık sık sorunlarla karşılaşmaktaydık. Bu sorunları çözmek için değişiklikler yapıp, farklı platformlar için hepsini tekrar derleme gereksinimi doğuyor ve bu uygulamaların yönetimi her geçen gün zorlaşıyordu.

Bir uygulama geliştirdiğimizi düşünelim. Kendi local ortamınızda test ettiniz ve herhangi bir soruna rastlamadınız. Daha sonra test edebilmek için uygulamayı farklı işletim sistemleri için test ortamlarına attınız. Test ortamında işletim sisteminden tutun, versiyon farklılıklarından, güvenlik ayarlarından kaynaklı problemlerden uygulamanızın çalışmadığı durumlarla sık sık karşılaşmaktayız. Bu yaşanan problemler için Docker bize container yapısı ile çözüm sunuyor.

Docker Nedir?

Docker, yazılım geliştiriciler için geliştirilen açık kaynaklı bir sanallaştırma platformudur. Docker ile istediğiniz herhangi bir işletim sistemi üzerinde, sanal containerler (makineler) çalıştırabilirsiniz. Bu sayede yazılımların geliştirilmesini, testini ve dağıtımını kolaylıkla gerçekleştirirken, platform farklılıklarında oluşan sorunların, geliştirici için herhangi önemi kalmamaktadır. Belki de en önemli özelliği “Localimde çalışıyordu, sunucuda neden çalışmadı?” sorununu ortadan kaldırıyor olmasıdır.

Container kavramını açıklamadan Docker’ın çalışma mantığını tam olarak anlamamız mümkün değildir. Bu yüzden container’ların nasıl çalıştığına bir göz atalım.

Container Nedir?

Kütüphaneler, sistem araçları, kod ve platform gereksinimleri dahil olmak üzere, yazılımların çalışması için gerekli her şeyi içeren, birbirinden izole olan paketlere container denir.

Docker Container’lar, docker image’lerinin çalışan örnekleridir. Bir image’i çalıştırmak bir Docker container oluşturulur. Image’ler container oluşturmakta kullanılabilecek bir şablon sağlar. Aynı zamanda image’ler container oluşturmak için neyin gerektiğinin bilgisini içerirler. Image’ler local veya remote depolanabilir.

Docker container’lar sanal makinelere çok benzerdir. Sanal makinelere göre daha çok alternatif çözümler sağlamak için kullanılan yapılardır. Sanal makinelerin aksine container’lar uygulama bazlı olup, istenilen teknolojiye göre gerekli bağımlılıkların bulunduğu uygulamaya özel environment’lar oluşturabilir. İki sanallaştırma yaklaşımı açısından bakarsak ikisinin de birbirlerine göre avantaj ve dezavantajları mevcuttur.

Docker Kurulumu

İlgili işletim sisteminize göre makinenize docker kurmanız gerekmektedir. Bunun için aşağıdaki adreslerden faydalanıp, detaylı kurulum adımlarını takip ederek kurulumu tamamlayabilirsiniz.

Versiyon kontrolü için cmd’de aşağıdaki komutu çalıştırdığınızda, kurulu olan versiyon bilgisini görüntüleyebilirsiniz.

Docker kurulum işlemi tamamlandıktan sonra Docker platformunda yeni bir kullanıcı oluşturabilirsiniz.

ASP.Net Core Projenin Oluşturulup Docker ile Deploy Edilmesi

İlk olarak Visual Studio ortamında ASP.NET Core Web Application uygulaması oluşturuyoruz.

Projemizi Web API olarak ve Docker’ın desteklenmesi için aşağıdaki gibi oluşturuyoruz.

Oluşturduğumuz projeye Docker Container eklemek için projenin publish ekranına gelip, yeni bir publish profili oluşturuyoruz.

Bundan sonraki adımda, yukarıda oluşturduğunuz Docker üyeliğinize ait bilgilerle giriş yaparak aşağıdaki gibi publish işlemi gerçekleştirilir.

Publish işlemi tamamlandıktan sonra Docker tarafında projeye ait repository oluşturulmuştur. Bu aşamadan sonra oluşturduğumuz Docker Container, istenilen platformlarda (Mac, Windows, Linux)kullanılabilir hale getirilmiştir.

Oluşturduğumuz Docker Container’ı test etmek amacıyla, oluşturulan repository’i çalıştırmak için aşağıdaki komutlar cmd ekranında sırasıyla uygulanır.

docker login

Daha önceden oluşturduğumuz Docker hesabı ile login gerçekleştirilir.

docker pull repositoryAdi:tagİsmi

Publish edilen repository’i farklı platformlarda çalıştırılmak için pull komutu kullanılır. Repository hakkındaki bilgileri https://hub.docker.com/repositories adresinden bulabilirsiniz.

docker images

Bu komut ile makinede bulunan çalıştırılabilir image dosyaları listelenir.

docker run -p 51998:80 repository:tag

Yukarıdaki images komutu ile ekrana gelen repository, tag ve port numarası bilgileri ile komut çalıştırılır. Böylece farklı bir platformda oluşturduğumuz proje çalışır hale gelmiştir. Aşağıdaki ekran görüntüsünde komut örnekleri gösterilmiştir.

http://localhost:51998/ adresine gittiğinizde uygulamanızın çalıştığını göreceksiniz.

Sonuç olarak, Windows işletim sistemine sahip bir makinede oluşturduğumuz bir projeyi, farklı bir işletim sistemi olan başka bir makinede container yardımı ile sadece saniyeler içerisinde çalışabilir hale getirdik.

Bu makale bayram eser ile birlikte hazırlanmıştır.

Makalede aklınıza takılan ya da belirtmek istediğiniz bir şey varsa aşağıdaki yorum kısmına yazabilirsiniz.

Bir daha ki yazıda görüşmek dileği ile…

Kaynakça:

1-) http://www.canertosuner.com/post/asp-net-core-uygulamasi-docker-da-nasil-deploy-edilir

2-) https://www.youtube.com/watch?v=f0lMGPB10bM&ab_channel=LesJackson

--

--