Burada anlatacağımız örnek React için olsa da Dockerfile içinde ilgili kısımlar güncellenerek diğer front-end teknojileri içinde çalıştırılabilir. Dockerfile konteynerlerimizi nasıl oluşturacağımızı belirttiğimiz dosyadır. Docker file Visual Studio (VS) üzerinden projenin üzerine sağ tıklanarak açılan menüden Add->Docker Support üzerinden oluşturulabilir.
Fakat buradan oluşturduğumuz Dockerfile içinde NodeJs kurumu içermediği için çalışmayacaktır. Bu sebeple imajlar üzerinde işlem yaparken aşağıdaki kod bloğu ile NodeJs kurulumlarının da yapılması gerekmektedir:
RUN apt-get update -yq \
&& apt-get install curl gnupg -yq \
&& curl -sL https://deb.nodesource.com/setup_10.x | bash \
&& apt-get install nodejs -yq
Yukarıda kod bloğu VS üzerinden oluşturduğumuz Dockerfile üzerine eklendiğinde dosyamızın son hali aşağıdaki gibi olacaktır:
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
RUN apt-get update -yq \
&& apt-get install curl gnupg -yq \
&& curl -sL https://deb.nodesource.com/setup_10.x | bash \
&& apt-get install nodejs -yq
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM microsoft/dotnet:2.1-sdk AS build
RUN apt-get update -yq \
&& apt-get install curl gnupg -yq \
&& curl -sL https://deb.nodesource.com/setup_10.x | bash \
&& apt-get install nodejs -yq
WORKDIR /src
COPY ["TuringApp/TuringApp.csproj", "TuringApp/"]
RUN dotnet restore "TuringApp/TuringApp.csproj"
COPY . .
WORKDIR "/src/TuringApp"
RUN dotnet build "TuringApp.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "TuringApp.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "TuringApp.dll"]
Dockerfile hazır olduğuna göre sıra projemizi çalıştırmaya geldi. Bunun için proje kodlarımızı (kaynak kodlarını) derleme yapacağımız Linux üzerindeki bir klasöre kopyalıyoruz. Proje klasörümüzün hemen yanına da Dockerfile kopyalıyoruz. Daha açıklayıcı olması bakımından dosyaları kopyadıktan sonra klasör şöyle görünmelidir:Bu aşamadan sonra Dockerfile kullanarak imaj oluşturmamız gerekiyor. Linux terminali açıyoruz ve ilk olarak aşağıdaki kodu çalıştırıyoruz:
sudo docker build -t firstcore .
Burada "firstcore" yeni oluşturacak imaja verdiğim isimdir. Siz kendinize göre isimlendirebilirsiniz.
Ayrıca aşağıdaki komutu kullanarak imajımızın docker tarafından listelendiğini görebiliriz:
sudo docker image ls
Bu aşamadan sonra sıra imajımızı çalıştırıp projemizi host etmeye geldi. Bunun için terminalde aşağıdaki komutu çalıştırıyoruz:
sudo docker run --name firstproj -p 8080:80 firstcore:latest
İşletim Sistemi:
Ubuntu 18.04.4 LST (Bionic Beaver)
Proje (Turing):
https://github.com/vyigity/TuringApp
Veri tabanı:
MySQL

No comments:
Post a Comment