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

How to deploy containers into Azure Container Instances(ACI) using Docker Desktop?

Recently there was an announcement (May 2020) about Docker partnership with Microsoft Azure for shortening the developer commute with Docker desktop and running containers in Container Instances in Azure. The new edge release of Docker Desktop provides an easy and quick integration between Docker and Microsoft Azure that enables you to use native Docker commands to run your applications as serverless containers with Azure Container Instances.

As a developer I can make use of the  same Docker CLI commands and experience which I use locally, to interact with Azure (ACI) as well. This experience is achieved by extending the existing docker context to support ACI.

Pre-requisites

Docker CLI commands for ACI

  • Log into Azure from the Docker CLI
    1. docker login azure
      
    • Once you are logged in, you just need to tell Docker that you want to use something besides the local engine. Docker context helps you to create ACI context. You can either pass in an Azure subscription and resource group to the command or use the interactive CLI to choose them. For this example I will provide in command as shown below.
    • docker context create aci demoacicontext --subscription-id XXX --resource-group XXX 
      --location XXX
      
    • Once you have created Docker Context, you can tell Docker to switch to using it by default. You can check context by using docker context ls command. Use below command to switch between the contexts.
    • docker context use demoacicontext
    • As mentioned in pre-requisites, I have an nginx image in my ACR for the demo which will be used for ACI provisioning using the following command.
    • docker run -d -p 80:80 demoacrblog.azurecr.io/samples/nginx:latest --name DemoACI
              Note: In case while pulling container image from ACR if you encounter any error related to Authentication, then use command for log in to registry e.g.  az acr login --name <ACR Registry Name>
      If we navigate to Azure portal and then Resource group under which we provisioned we can see new ACI provisioned using Docker CLI with Public IP assigned, using which we can browse the container instance.
      • Similarly we can remove ACI containers using docker command as shown below. Note that once the command has been executed, nothing is running on ACI and all resources are removed from ACI – resulting in no ongoing cost
      • docker rm demoaci
      • Apart from remove command following commands are supported as well
        • docker exec -t <CONTAINER_ID> COMMAND
        • docker logs <CONTAINER_ID>
      Above is a demonstration for single a container, if you have a requirement to deploy a multi-container app then use Docker Compose. Only change in command will be instead of using docker run will be using new syntax docker compose up

      Docker commands summary for provisioning and removing ACI.

      Limitations or known issues:

      Not all commands are supported but there are also commands that they plan to support in the future but just haven't got around to yet e.g. docker volume. 

      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