ASP.NET Core 2.2 Uygulamamızı Docker Üzerinde Yayınlamak

Selamlar,
Bu yazımızda bir asp.net core uygulamasını docker üzerinde yayınlama örneği yapacağız.
Ön gereksinim olarak windows, macOS veya linux + docker ce(https://docs.docker.com/install/) kurulumuna ihtiyacımız olacak. Yazının ana konusu olmadığı için docker kurulum aşamalarını es geçerek direk konuya giriyorum.

Bu yazıda örnek olarak bir linux dağıtımı olan debian 9’u (https://www.debian.org/CD/http-ftp/) kullanacağım.

1-) ASP.NET Core 2.2 Uygulaması oluşturulması

Öncelikle dotnet ‐‐version komutunu çalıştırarak en güncel dotnet core sdk sürümüne sahip olduğumuzdan emin oluyor ardından dotnet new mvc komutuyla yeni bir mvc uygulaması oluşturuyoruz.

2-) Dockerfile oluşturulması

Dockerfile, docker imajı için gerekli olan en temel dosyadır. İçerisinde docker imaj oluşturulurken gerekli adımları içeren komutlar bulunur, kendine özel bir syntax yapısı vardır.
Ben bu örneğimde aşağıdaki dockerfile’ı kullanacağım.
Not: ENTRYPOINT kısmındaki dll isminin proje isminizle aynı olmasına dikkat edin. Default olarak projenizin isimiyle aynı isimde çıktı verir.

Örnek Dockerfile içeriği:

FROM microsoft/dotnet:sdk AS build-env
WORKDIR /app
COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out
FROM microsoft/dotnet:aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "mvcapp.dll"]

Projemizin bulunduğu dizine Dockerfile isminde bir dosya oluşturup içerisine ilgili komutları ekliyoruz.

Ben dosyayı oluşturuken vi editörünü kullandım. Siz keyfinize göre nano, emacs veya gui kullanan bir editör tercih edebilirsiniz.

3-) Docker image oluşturulması ve oluşturulan image’ın çalıştırılması

Şimdi sıra geldi image’ımızı oluşturup, oluşturulan image’ı çalıştırmaya. Image’ı oluşturmak için docker build -t mvcapp . komutunu kullanıyoruz. Bu komutu açıklamak gerekirse docker build ile image oluşturacağımızı, -t parametresi ilede oluşturulan image için bir tag belirtiyoruz. Ardından oluşturulan image’ın nereye oluşturucacağını söylüyoruz. Bu örnekte “.” yani şuanki buluğumuz path’e image’ın oluştulmasını istedik.

image’ımız başarılı bir şekilde oluştu. docker image ls komutu ile image’ımızın oluşup oluşmadığını kontrol edebiliriz.

Artık oluşan image’ı çalıştırmaya hazırız. docker run -d -p 8080:80 –name myapp mvcapp komutu ile uygulamamızı docker üzerinde çalıştırıyoruz. Komutu kısaca açıklamak gerekiyse -d deattach etmeye yarıyor. -p ile port yönlendirmesi yapıyoruz 8080:80, container’ın 80’ı portunu ana işletim sisteminin 8080 portuna yönlendir demek. –name ilede isim verebiliriz, ardından image ismimizi yani “mvcapp” yazıyoruz.

ve uygulamamız çalışıyor…