Last updated on May 11th, 2023
Estimated reading time: 4 minutes
Introduction
In this article, you’ll learn how to containerize a .NET 6 application with Docker. Containers have many features and benefits, such as being an immutable infrastructure, providing a portable architecture, and enabling scalability. The image is pushed to google container registry.
If you are new to Google Cloud Platform refer our article on Google cloud free tier account – Full Stack Tutorials Hub .
Prerequisites
- Google free tier or paid account.
- Basic knowledge of using Google cloud services.
Create .NET app Using Google Cloud Shell
Login in to Google cloud console and navigate to projects menu and create a new project.
It would take some time for your project to set up in google cloud. Once the project is ready, navigate to the new project.
Search for cloud shell. Select cloud shell editor. This would provision a new VM instance in the cloud.
This VM instance would be all .NET 6 SDK and Docker pre-installed.
Create a .NET 6 project using below CLI command.
dotnet new mvc --framework "net6.0" -o Buildcustomnetcoredemo
Publish the application using the below command.
dotnet publish -c Release
Set up the Docker file
In the cloud shell, navigate to the project explorer view and add Docker File at the project level
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 8080
ENV ASPNETCORE_URLS=http://*:8080
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["Buildcustomnetcoredemo.csproj", "."]
RUN dotnet restore "./Buildcustomnetcoredemo.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "Buildcustomnetcoredemo.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Buildcustomnetcoredemo.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Buildcustomnetcoredemo.dll"]
he Dockerfile file is used by the docker build
command to create a container image. This file is a text file named Dockerfile that doesn’t have an extension.
The FROM
keyword requires a fully qualified Docker container image name. The Microsoft Container Registry (MCR, mcr.microsoft.com) is a syndicate of Docker Hub — which hosts publicly accessible containers. The dotnet
segment is the container repository, whereas the sdk
or aspnet
segment is the container image name. The image is tagged with 6.0
, which is used for versioning.
Save the Dockerfile file. The directory structure of the working folder should look like the following
From your terminal, run the following command:
docker build -t custom-image -f Dockerfile .
Docker will process each line in the Dockerfile. The .
in the docker build
command sets the build context of the image. The -f
switch is the path to the Dockerfile. This command builds the image and creates a local repository named counter-image that points to that image. After this command finishes, run docker images
to see a list of images installed:
docker images
Single run
Docker provides the docker run
command to create and run the container as a single command. This command eliminates the need to run docker create
and then docker start
. You can also set this command to automatically delete the container when the container stops. Port ‘8080’ of the container is mapped to port ‘32767’ of the host.
docker run -p 32767:8080 custom-image
Push Image to Google Container Registry
Before pushing the docker image to Google Container Registry, we need to tag image in below format
HOSTNAME/PROJECT-ID/TARGET-IMAGE
docker tag custom-image gcr.io/buildcustomimage/custom-image:0.1
Enable google container registry Api under our working project
Push the image to GCR
docker push gcr.io/buildcustomimage/custom-image:0.1
In this article, you have learned how to build custom Images for ASP.NET Core and push it to google container Registry.
Next steps
Deploy ASP.NET Core Containerize applications to Google App Engine
Run .NET6 app in Google App Engine Flexible environment – Full Stack Tutorials Hub
Deploy ASP.NET Core Containerize applications to Google Kubernetes Engine
Google Kubernetes Services Archives – Full Stack Tutorials Hub