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
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