Tidy up - Unused Project and Nuget package reference using Visual Studio 2019

If you are a Developer/Architect using Visual Studio as IDE for your development activities, this blog post will be of your interest. During the Ignite 2021 conference, Microsoft released Visual Studio 2019 v16.9 and v16.10 Preview 1. As part of version 16.10 Preview 1, one of the cool features they introduced is to "Remove Unused References..." for any Projects and Nuget packages that are not in use. At the time of writing this blog post, we have Visual Studio Version 16.10.0 (official release) which includes this new feature.  As part of development, we generally get carried away and introduce new Nuget package references to your project and add new references to your Projects. By the end of development, you will not be 100% sure which are not being referenced and unused which means you will leave those unused project references in your application. Now you might be wondering what's the big deal in it since it doesn't harm. The advantage of removing unused project r

Containerising .NET Core 3.1 Application

This is continuation of a series of posts on using Docker and containerization with .Net Core. If you are new to this series its recommended to look at Getting started with Docker and Containers.NET Core 3.1 released December 3, 2019 as a Long-term support release as part of this post we will see how to containerise a Web API type application.

Getting Started
In this post we are going to see how to build a Container based application and basic commands which we use everyday when working with containers.

Prerequisite’s                                                                                
        ·       Install Docker
        ·       Install .NET Core 3.1 SDK
        ·       Visual studio 2019/ Visual studio code
        ·       Visual studio extension Docker to be installed from Visual studio marketplace

Steps
For demo purpose I will be running on Docker Linux container
If you are new or first timer for Docker its recommended to use Visual Studio because as part of creating project you have option to configure Docker support.

      1.     Open Visual studio 2019, click on “create a new project” option select “Asp.NET Core Web Application” as shown below
      2.     By clicking create your first simple Docker demo application ready to go. If you browse through solution explorer “Dockerfile” is auto populated for the Web API application.
Docker File description
·       FROM tells Docker which image you want to use for your container.
·       WORKDIR tells Docker which directory to use for performing subsequent commands.
·       COPY tells Docker to copy a file from your local file system into the container image.
·       RUN executes commands within the container image.
·       Docker executes the command specified by the ENTRYPOINT
            ·       Use the Microsoft-provided ASP.NET core image, which has only runtime components. Call this stage ‘base’.
            ·       Use the SDK image to create a release build of the application. Call this stage ‘build’
            ·       Use the ‘build’ stage image to publish the application to the ‘app/publish’ folder. Call this stage ‘publish’.
            ·       Dockerfile uses the SDK image to build your application, then discards that image and uses a runtime image to run the application.
            ·       Using the ‘base’ stage image, copy the contents of the ‘app/ publish’ directory from the    ‘publish’ stage. Call this stage ‘final’

In short summary Dockerfile uses SDK image to build your application then discards that image and uses run time image for running the application.

In case if you have existing application for which you want to add Dockerfile it can be done easily from Visual studio/code. From Visual studio its right click on start-up project àAdd Docker support should add Dockerfile to existing project.

If its from Visual studio code in “Command Palette” type “Add Docker files to workspace” should add Dockerfile to existing project.

Run the .NET Core app in Docker Container
Following command will be used for building docker image

# Build an image using the Dockerfile in the directory where it exists, replace the place holder with appropriate image name you would like to name it.
Docker build -t <imagename> .

#Run the image
Docker run –-rm -it -p 5001:80 <imagename>

Once the container is in running state if we browse using http://localhost:5001 (because you mapped port 5001 to port 80 in your container) application will be in browsable state.

Passing Configuration to Docker
If we need to pass configuration to Docker container as environment variables command looks like
Docker run –-rm -it -e ASPNETCORE_ENVIRONMENT=’PRODUCTION’ -p 5001:80 <imagename>

Useful commands for Docker
List of commands that will be useful when you work on Docker.

List your images
$ docker image ls

Delete specific image
$ docker image rm [image name]

Delete all existing images.
docker image rm $(docker images -a -q)

List all existing containers (running and not running)
docker ps -a

Stop a specific container
docker stop [container name]

Delete a specific container (only if stopped)
docker rm [container name]

Delete all containers (only if stopped)
docker rm $(docker ps -a -q)

Display logs of a container
docker logs [container name]

Comments

Popular posts from this blog

Tidy up - Unused Project and Nuget package reference using Visual Studio 2019

Swagger UI for Azure Function v2 & v3 APIs

Authenticate Azure Functions - API Keys