Swiftorial Logo
Home
Swift Lessons
Tutorials
Learn More
Career
Resources

Using Containers and Docker with .NET

Introduction

Containers and Docker provide a convenient way to package, deploy, and manage applications. In this tutorial, we will explore how to use containers and Docker with .NET applications.

Setting Up the Project

First, ensure Docker Desktop is installed on your development machine. You can download it from the official Docker website.

Creating a .NET Application

Create a new .NET application or use an existing one that you want to containerize.

dotnet new webapi -n MyApi
cd MyApi

Adding Docker Support

Add Docker support to your .NET project. This can be done using Visual Studio or the .NET CLI.

dotnet add package Microsoft.VisualStudio.Azure.Containers.Tools.Targets
dotnet publish -c Release -o out

Creating a Dockerfile

Create a Dockerfile in the root directory of your project to define how Docker should build your application.

# Dockerfile
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["MyApi.csproj", "./"]
RUN dotnet restore "./MyApi.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "MyApi.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "MyApi.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyApi.dll"]

Building and Running the Docker Image

Build the Docker image and run it locally to verify everything works as expected.

docker build -t myapi-image .
docker run -d -p 8080:80 --name myapi-container myapi-image

Testing the Containerized Application

Access your .NET application running inside the Docker container through a web browser or tools like Postman.

Deploying to a Container Registry

Once you're satisfied with testing, you can push your Docker image to a container registry like Docker Hub or Azure Container Registry for deployment.

Conclusion

In this tutorial, we covered the basics of using containers and Docker with .NET applications. We created a .NET project, added Docker support, created a Dockerfile, built and ran a Docker image locally, and discussed deployment to a container registry. By containerizing your .NET applications, you can achieve consistency in deployment and scalability, making it easier to manage and scale your applications.