Asp.Net Core Projesini Dockerize Etme Part 1

ihsan güç
3 min readMar 27, 2022

Bugünkü makalede Asp.net core projemizi dockerize ederek küçük bir örnek oluşturarak anlatacağım. İyi okumalar.

Docker, “konteynerleştirme” olarak da bilinen işletim sistemi seviyesinde sanallaştırma sağlayan bir bilgisayar programıdır.

İlk önce docker desktop (4.5.1 kullanıyorum) bilgisayarımıza indirmemiz gerekiyor bu linkten indirebilirsiniz. Docker Desktop ‘ı indirdikten sonra Docker CLI’nin hangi arka plan programıyla (Linux veya Windows) konuştuğunu değiştirebilirsiniz. Değiştirmek için docker simgesinin üstüne sağ tıklayarak switch to (windows or linux)containers tıkayarak geçiş sağlaya bilirsiniz. Linux ile haberleşmesini istediğim için ben linux kısmına geçtim.

Resim 1

Docker desktop açtığımızda;

  • Containers/Apps: imageleri oluşturduktan sonra çalıştırdığımızda oluşan containerları görüntülediğimiz alan.
  • Images: Oluşturduğumuz veya yüklediğimiz imageleri gördüğümüz alan
  • Volumes: Volumes’leri görüntülediğimiz kısım. Volume docker dışında veri sakladığımız kısımdır.

Örnek olarak test etmek için terminal kısmına docker hub da olan nginx’i yükleyerek test edelim aşağıdaki kodu terminal yazarsak eğer image yüklü değil ise yükleme yapacaktır eğer image yüklü ise zaten anı isimde yüklü bir image vardır diye hata dönecektir.

docker run --name nginxtest -d -p 8080:80 nginx
  • -- name nginxtest: çalışan container verdiğimiz isimdir.
  • -d: çalışan sistem direk olarak background’da çalışmasını sağlıyor.
  • -p 8080:80: Dışarıya açtığımız port numarası localde çalıştığımız için http://localhost:8080 diyerek porta ulaşabiliyoruz.
  • nginx: hub.docker da yüklü olan paket eğer istersek nginx:tagname vererek istediğimiz versiyonu indirebiliriz.

http://localhost:8080 denesek aşağıdaki ekran bizi karşılayacaktır.

Docker için terminal üzerinden kısa yollar;

  • docker images: Oluşturduğumuz imageleri görmemizi sağlar.
  • docker ps -a: Çalışan containerları görmemizi sağlar.
  • docker rm -f ‘containerId’: container’ları silmemizi sağlar.
  • docker rmi -f ‘imageId’: imageleri silmemizi sağlar.

Kısa bilgi verdikten sonra .net core projemizi docker image oluşturmak için öncellikle bir tane dockerfile(Imagelerin nasıl oluşturalacağını belirlediğimiz yönlendirme listesidir.) gerek duyacağız. Visual Code daha rahat olduğundan projeyi visual code ‘da açıyoruz. Eğer istiyorsanız Visual Studio’un Docker Support’undan faydalanabilirsiniz size basic bir dockerfile oluşturuyor.

Dockerfile’da dosyasında:

  • 1.ci satır: Gerekli çalışma ortamı belirlediğimiz kısımdır.
  • 2.ci satır: Çalışma klasörü belirlediğimiz kısımdır.
  • 4 ve 10 arası satır: Projemizi derlediğimiz kısım.
  • 12 ve 13.üncü satır: Eğer build kısmında hata çıkmadıysa publish işlemlerini yaptığımız alan.
  • 15 ve 18.inci satır: Publish ettiğimiz projenin çalışabilmesi için gerekli ayarlar.

Dockerfile oluşturduktan sonra ile yapmamız gerek işlem image oluşturmak için aşağıdaki kodu kullanıyoruz unutmamamız gereken kısım terminal kısmında dockerfile oluşturduğumuz dosya klasörüne giriş yapmak gerekiyor yoksa direk olarak aşağıdaki kod çalışmayacaktır.

docker build -t appone .

Dockerfile’da belirttiğimiz kodu satırlarını tek tek çalıştığını görebiliriz ve docker images diyerek oluşturduğumuz image’i görebiliriz. Oluşturduğumuz image’i aşağıdaki kodu çalıştırarak oluşturduğu container id bize gönder ve background’da çalışmaya devam edecektir.

docker run -t -d  --name appo -p 5050:80 appone

http://localhost:5050/swagger/index.html ulaşabiliyoruz.

Bir sonraki yazımda docker-compose kullanarak birden fazla projeyi aynı anda build ve image alma durumları ve bir tane Virtual Machine ’e docker yükleyerek Jenkins üzerinden nasıl deployment yapacağımızı küçük bir örnek uygulama ile göstereceğim.

Kaynakça

Okuduğunuz için teşekkürler. Bir sonraki yazıda görüşmek dileğiyle…

--

--