Mostefai Mohammed Amine

Software and Cloud Architect

Amine
  • Contact
Previous Post
Next Post
Oct 22, 2019 .NET Programming.NET CoreDocker

The ultimate checklist for making your making your .NET core docker containers access your SQL Server databases

Hi, working with docker and .NET core is really cool in matters of scalability and separation of micro services. However, for the beginners, it could be tedious to have the containers access the SQL Server databases.

Enable SQL-Based notification

 

As you all know, SQL Server supports windows-based and SQL-based authentication. Knowing, that containers are based on linux (in most of the cases), the first authentication option is logically eliminated. Hence, to make the containers access the SQL, the server should be configured to support sql authentication. Click here to check the docs.

Open the port !

Yes, obviously, the container will access to SQL Server using a specific port (1433 as the default value). The host computer firewall has to authorize incoming access through the port 1433 in order to make the containers access the databases.

Configure the right server IP address

When accessing local databases, we are generally using localhost or dots (.) in our connection strings. These connection strings won’t work on the containers for obvious reasons. The right IP address is the ip attributed by docker to docker nat (check it using ipconfig).

Configure your docker profile for your app

To make the deployment easier, create a specific profile for the docker deployment in your launchSettings.json. The snippet below is an example of this profile.

   "DockerBuild": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "docker"
      },
      "applicationUrl": "https://localhost:5001;http://localhost:5000"
    },

As you can see, the environment variable ASPNETCORE_ENVIRONMENT takes the value “docker”. To have settings specific to the docker environment, create a file named appsettings.docker.json in the root directory and set a specific connection string (with the adequate IP address).

However, when you run your container using docker run, the default environment name will be “Production” and your setting file will not be taken in account.

Don’t worry. The solution is as simple as adding an ENV instruction to your docker file just before copying the final files as specified by the example below

 

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

Enjoy !

.NET FrameworkDockerContainerlaunch settings
Share This Post

Related posts

  • The ultimate checklist for making your making your .NET core docker containers access your SQL Server databases Hi, working with docker and .NET core is really cool in matters of scalability and separation of mic
  • Database Engine of SQL Server 2014 SP1 not installing on Windows 2012 Server R2 Hi,L'm getting the following issue on several servers when trying to install : "Wait on the Database
  • Backing up a database from a SQL Server 2019 container This post is a workaround for backing up databases in SQL 2019 Linux containers after the last updat...
Saving the comment

Cancel reply to comment

The captcha value you provided is incorrect.