Si të ekzekutoni një aplikacion .NET në Docker


Docker është një shërbim kontejnerizimi, i përdorur për ekzekutimin e aplikacioneve në mjedise të izoluara të paketuara me të gjitha varësitë dhe kodin që i nevojiten për të funksionuar. Mund të ekzekutojë të gjitha llojet e aplikacioneve, duke përfshirë programe të bazuara në .NET duke përdorur imazhe të kohës së ekzekutimit të ofruara nga Microsoft.

Dockering .NET

Microsoft ofron imazhe bazë të para-ndërtuara për ekzekutimin e aplikacioneve .NET. Nuk do t'ju duhet të merreni me instalimin e kohës së funksionimit .NET ose SDK në kontejnerin tuaj Docker, pasi thjesht mund të shtriheni nga imazhi bazë i Microsoft për versionin e .NET që përdor aplikacioni juaj.

Nëse nuk planifikoni të vendosni kontejnerë të Windows në një server Windows, do t'ju duhet të përdorni ose .NET Core ose .NET 5. Koha e ekzekutimit më e vjetër .NET Framework nuk është ndër-platformë dhe nuk do të funksionojë në kontejnerë të bazuar në Linux.

Nëse nuk e keni të instaluar Docker në makinën tuaj të zhvillimit, do t'ju duhet të instaloni Docker Desktop për të pasur akses në CLI. Nëse jeni duke përdorur WSL në Windows, do të dëshironi të aktivizoni motorin e bazuar në WSL 2, i cili ofron performancë më të mirë.

Për të testuar gjërat, ne do të krijojmë një aplikacion të ri ASP.NET API. E njëjta procedurë e përgjithshme do të zbatohet për çdo lloj aplikacioni, pasi gjithçka që Docker po bën është të ekzekutojë një ndërtim sa herë që ndërtoni kontejnerin dhe të filloni aplikacionin tuaj me një komandë të pikës hyrëse.

Krijoni një skedar të ri të quajtur Dockerfile në rrënjën e projektit tuaj, ku ndodhet zgjidhja juaj. Ngjitni në konfigurimin e mëposhtëm:

FROM mcr.microsoft.com/dotnet/core/sdk AS build-env
WORKDIR /app

# Copy csproj and restore
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -o out

# Build runtime image
FROM mcr.microsoft.com/dotnet/core/runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "DockerTest.dll"]

Ky Dockerfile tërheq imazhin .NET Core SDK për të kryer ndërtimin. Ai kopjon .csproj dhe rikthen, më pas kopjon gjithçka tjetër dhe ekzekuton një ndërtim. Pastaj, ai ndërton një imazh të ri nga imazhi .NET Runtime dhe kopjon objektet e ndërtimit.

Më në fund, pika e hyrjes përcaktohet këtu si dotnet DockerTest.dll. Kjo do të nisë serverin në internet ASP.NET, megjithëse mund t'ju duhet të ndryshoni parametrat për aplikacionin tuaj ose të specifikoni një komandë krejtësisht të ndryshme të pikës hyrëse.

Mund të testoni ekzekutimin e kontejnerit tuaj me docker container run, duke e kaluar atë në ID-në e kontejnerit të ndërtimit:

docker container run containerid

Për një aplikacion ASP.NET, do t'ju duhet të hapni portet duke hartuar një port në host në një port në kontejner:

docker run -p 80:80 containerid

Ju mund të lexoni udhëzuesin tonë për të punuar me Docker dhe Dockerfiles për të mësuar më shumë.