Dockerfile sample

Living in the root of the application, a Dockerfile is just a plain text file; you can either use the following command to create it in Windows, or anyway you like: copy NUL Dockerfile. The sample below contains everything necessary to build and run an image. Comments above each command attempt to provide a bit of clarity:

# This is a sample Dockerfile for building and running ASP.NET Core applications 
# This is part of the cheat sheet at https://blog.georgekosmidis.net/2020/06/12/docker-cheat-sheet-for-dotnet-core/

# Pull ASP.NET Core 3.1 runtime and give the name 'base'
# More info on 'FROM' instruction here: https://docs.docker.com/engine/reference/builder/#from
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base

# Set the ports where the container listens at runtime
# More on the 'EXPOSE' instruction here: https://docs.docker.com/engine/reference/builder/#workdir
EXPOSE 80
EXPOSE 443

# Pull the ASP.NET Core 3.1 SDK and give the name 'build'
# The SDK runs an app on ports 5000 and 5001, that's why we also need runtime
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build

# Set the Working Dir to '/src'. This is where the source code is 
# The WORKDIR instruction sets the working directory for any 
#   RUN, CMD, ENTRYPOINT, COPY and ADD instructions that follow
# More on the 'WORKDIR' instruction here: https://docs.docker.com/engine/reference/builder/#workdir
WORKDIR /src

# Copy your projects 
# More on the 'COPY' instruction here: https://docs.docker.com/engine/reference/builder/#copy
COPY ["Name.Of.Your.Project.csproj", "Name.Of.Your.Project./"]
COPY ["Dependancy.Of.Your.Project.csproj", "Dependancy.Of.Your.Project./"]

# Run in a shell, in this case run 'dotnet restore'
# More the 'RUN' instruction here: https://docs.docker.com/engine/reference/builder/#run
RUN dotnet restore "RegistrationService.Web/RegistrationService.Web.csproj"
COPY . .
WORKDIR "/src/RegistrationService.Web"
RUN dotnet build "RegistrationService.Web.csproj" -c Release -o /app/build

# Run the publish command using the SDK named as 'build'
FROM build AS publish
RUN dotnet publish "RegistrationService.Web.csproj" -c Release -o /app/publish

# Pull 'base' image and name it as 'final' to allow pull access for publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .

# Set the entry point, in other words, what to run!
# More on the 'ENTRYPOINT' instruction here https://docs.docker.com/engine/reference/builder/#entrypoint
ENTRYPOINT ["dotnet", "RegistrationService.Web.dll"]

#asp.net core #docker #aspnetcore

Docker cheat sheet for .NET Core - The .NET Lab
9.75 GEEK