Build & Containerize .Net Core Project

091918_1854_DockerforWi6.png

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

Yazı gezinmesi

Mobil sürümden çık