Search Results for

      Show / Hide Table of Contents

      Intent.AspNetCore.Docker

      The module installs Docker support into your ASP.Net Core solution, similar to how Visual Studio would do if you select enable Docker support on solution creation.

      Running and debugging your solution under Docker

      The easiest way to run or debug your solution in Visual Studio is to simply choose "Docker" as your Debug Target:

      The Debug Target drop down in Visual Studio

      Configuration and Environment Variables

      To configure your .NET app, typically an ASP.NET Core app, you can use appsettings.json and/or environment variables.

      • appsettings.json: This file is used to store configuration settings. ASP.NET Core supports multiple appsettings.json files for different environments, such as appsettings.Development.json and appsettings.Production.json. These files allow you to override settings based on the environment your application is running in. For more details, see ASP.NET Core Configuration.

      • Environment Variables: ASP.NET Core can also read configuration settings from environment variables. These can be set in the launchSettings.json file or directly in the Dockerfile or Docker Compose file. Environment variables prefixed with ASPNETCORE_ or DOTNET_ are to override specific launch or system variables. For more information on environment variables and their precedence, refer to ASP.NET Core Environment Variables.

      Environment variables have a higher preference than appsettings.json settings. This means that if a setting is defined in both appsettings.json and as an environment variable, the environment variable's value will be used. This behavior is particularly useful for sensitive information that should not be stored in source control or for settings that vary between environments.

      For example, consider the following appsettings.json configuration:

       {
        "ConnectionStrings": {
          "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-WebApplication1-53bc9b9d-9d6a-45d4-8429-2a2761773502;Trusted_Connection=True;MultipleActiveResultSets=true"
        }
      }
      

      And an environment variable:

      In this case, the environment variable ConnectionStrings__DefaultConnection will override the DefaultConnection setting in appsettings.json.

      Basic Docker cli commands

      Docker build

      From a terminal in the folder of the project with the entry point of your application:

      docker build -f ./Dockerfile -t <image-name> ..
      

      -f specifies the Dockerfile to use, -t specifies the docker image name, and the .. at the end specifies the working directory.

      See Docker's documentation for more information.

      Docker run

      docker run -P <image-name> ..
      

      -P publishes exposed ports to random ports.

      See Docker's documentation for more information.

      Pass Environments variables via arguments

      Execute docker command:

      docker run -it --name "your-container-name" -e ConnectionStrings__DefaultConnection="Server=myserver;Database=mydatabase;User Id=myuser;Password=mypassword;" <image-name>
      

      Pass ENV file with configured Environment Variables

      Create an .env file:

      ConnectionStrings__DefaultConnection=Server=myserver;Database=mydatabase;User Id=myuser;Password=mypassword;
      

      Execute docker command:

      docker run -it --name "your-container-name" --env-file ./.env <image-name>
      

      Troubleshooting

      There are scenarios where you need to clear out your local .vs folder.

      • If you change your development hosting option i.e., from Docker to Local Kestrel.
      • To regenerate the Docker certificate setup, when running the dockerized solution.
      • Edit this page
      ☀
      ☾
      In this article
      Back to top Copyright © 2017-, Intent Architect Holdings Ltd