Build & Containerize .Net Core Project
0

Uzmanlığım yazılım alanı olmadığı için detaylı olarak .Net Core yapısına girmeyeceğim ancak yazılarımda bir kod kullanma gereği duyduğumdan dolayı sizler için en baştan anlatmanın doğru olacağını düşündüm. Bu makalemde .Net Core MVC projesi oluşturarak, github’a push edeceğim.

İlk olarak proje dosyalarınızı saklayacağınız bir directory oluşturacağım.

mkdir myFirstNetCoreApplication

Sonra bulunduğum directoryi bu directory olarak değiştireceğim.

cd myFirstNetCoreApplication

Boş directory içerisinde dotnet new komutuyla yeni bir .Net Core projesi oluşturacağım.

dotnet new mvc

Resim – 1

Ben örnek olarak MVC template’i kullandım ancak aşağıdaki komutla diğer template’leri de listeleyebilirsiniz.

dotnet new -l

Resim – 2

Application oluştuktan sonra restore komutuyla localimizde olmayan paketleri restore edebiliriz. restore komutu arka planda bizim için Nuget.exe’yi çağırarak, gerekli paketleri restore etmektedir.

dotnet restore

Resim – 3

Paketlerimizi restore ettikten sonra projemizi clean ve build etme aşamasına geçebiliriz. clean ile bin\Debug\netcoreapp2.x altındaki herşey silinir. dotnet build ile de projemizi build edebiliriz.

dotnet clean

dotnet build

Resim – 4

Artık projemizi çalıştırarak kontrol edebiliriz.

dotnet run

Resim – 5

Resim – 6

Bu aşamadan sonra uygulamamızı containerize edebiliriz. Bunun için öncelikle Dockerfile dosyasını oluşturmalıyız

Bulunduğumuz dizinde Dockerfile isimli uzantısız bir dosya oluşturmalısınız. Bu dosyanın içeriği aşağıdaki gibi olmalıdır.
FROM microsoft/dotnet:sdk AS build

WORKDIR /app

COPY *.csproj ./

RUN dotnet restore

COPY . ./

RUN dotnet publish -c Release -o out

FROM microsoft/dotnet:aspnetcore-runtime AS runtime

WORKDIR /app

RUN echo ‘copying my basic .Net Core application’

COPY –from=build /app/out .

ENTRYPOINT [“dotnet”,”myFirstNetCoreApplication.dll”]

Dosyayı oluşturduktan sonra aşağıdaki komut ile docker imajını oluşturabilirsiniz. Ben mswhowto ismini tercih ettim imajımda, dilerseniz siz bu bölümde değişiklik yapabilirsiniz.

docker build -t mshowtocore .

Resim – 7

Violâ, özel tasarım container imajımız çalıştırılmaya hazır bizi bekliyor! Çalıştırıp kontrol edelim bakalım herşey yolunda mı… Çalıştırmadan önce imajnızın adını ve tagini kontrol etmek istiyorsanız docker image ls komutunu kullanabilirsiniz.

Resim – 8

Tamam tamam artık çalıştırıyoruz. Sihirli komut geliyorJ

docker run –rm -d –name myapp -p 8000:80 mshowtocore

80 portunu localimde Jenkins kullandığı için 8000’e route ettim. Şimdi bir browser açarak http://localhost:8000 yazarsanız uygulamamızın görüntülendiğini göreceksiniz.

Artık uygulamamızı GitHub’a push edebiliriz. GitHub accountunuzu ve yeni bir boş projenizi oluşturduktan sonra aşağıdaki komutlarla bana eşlik edebilirsiniz.

Localde repo oluşturur.

git init

Bu repo içerisine, içerisinde bulunduğunuz dizindeki tüm dosyaları atar.

git add .

Değişiklikleri localdeki repoda commitler.

git commit -m “added files to project”

Aşağıdaki komutta hakkiogretmen github account isminiz, myFirstNetCoreApplication ise proje isminizdir. Bu bölümleri kendinize özel bilgilerle değiştirmelisiniz.

git remote add origin https://github.com/hakkiogretmen/myFirstNetCoreApplication.git

Remote repositoryi kontrol eder, doğrular.

git remote -v

Local repositoryi remote repoya push eder.

git push -u origin master

GitHub accountunuz altında projenizi görüntüleyebilirsiniz.

Bu aksiyonla da yazımızın sonuna gelmiş olduk. Peki neler yaptık?

  • .Net Core ile MVC patternli yeni bir proje oluşturduk.
  • Projemiz için Dockerfile oluşturduk.
  • Dockerfile kullanarak container imajı build ettik ve docker run ile çalıştığını gözlemledik.
  • Dockerfile ile birlikte proje dosyalarımızı GitHub accountumuz altına push ettik.

Dolu dolu bir yazı olduğuna inanıyorum. Umarım faydalı bulursuuz.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

TAGs:Container, GitHub, Docker, c#, .Net Core, DevOps, .Net Core MVC, Dockerfile,ACR, AKS Cluster, azure, Azure CLI, Azure Cloud Shell, Azure Container Registry, cloud, Container, DevOps, Docker, Docker CLI, docker hub, docker registry

Bu İçeriğe Tepkin Ne Oldu?
  • 0
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 1
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Üniversite ve öncesindeki öğrenimimi İzmir’de tamamladım. Ege Üniversitesi Bilgisayar Mühendisliği bölümünden mezun olduktan sonra IBTech ‘te System Administrator olarak kariyerime adım attım. Sonrasında yine IBTech içerisinde System, Database ve Application yönetimini aynı anda yapabildiğim kartlı ödeme sistemleri ekibinde görev aldım. Burada gerçekleştirdiğimiz altyapı otomasyon projelerinin de etkisiyle Intertech’te DevOps pozisyonunda kariyerime devam etme fırsatını elde ettim.Microsoft onprem ürünlerinden SCCM, SCO, Windows Server, Active Directory, Exchange ve SQL Server gibi temel ürünlerde adminlik yapmamın yanı sıra, Failover Cluster, Powershell gibi konularda da iş hayatımda önemli çalışmalarım ve tecrübelerim oldu.DevOps ‘un hayatıma girmesiyle de işler çok hızlı değişmeye başladı. Hızlıca CI/CD süreçlerinde kullanılan Microsoft TFS kullanmaya başlayarak, Open Source ürünlerle tanışma fırsatını yakaladım. Piyasada kullanılan Open Source ürünlerden Jenkins, Ansible, Docker, Kubernetes, Elastic Search, Logstash, Kibana ile uğraşma fırsatım oldu.Üniversiteden mezun olduktan sonra hiç bitmeyen yazılım merakım sayesinde ASP .Net, .Net Core, C# programlama dilleriyle geliştirmelerim oldu. Orta seviyede Groovy, başlangıç seviyesinde de Python dillerinde program ya da script geliştirebiliyorum, ileri derecede Powershell bilgisine sahibim. Önümüzdeki yıllarda Powershell ile ilgili Türkçe kaynaklar yayımlamayı, python bilgimi arttırarak, DevOps ‘un özellikle IaC alanında programlama diline bağımlı kalmaksızın geliştirmeler yapabilmeyi hedefliyorum.

Yazarın Profili
İlginizi Çekebilir

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir