Connection error to remote SQL server from local docker container

My dotnet core app running in a docker container on my needs to connect to some external service via their IP one of which is an sql database running separately on a remote server hosted on google cloud. The app runs without issue when not running with docker, however with docker it fails with

An error occurred using the connection to database 'PartnersDb' on server '30.xx.xx.xx,39876'.
fail: Microsoft.EntityFrameworkCore.Update[10000]
      An exception occurred in the database while saving changes for context type 'Partners.Api.Infrastructure.Persistence.MoneyTransferDbContext'.
      System.InvalidOperationException: Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled conn
ections were in use and max pool size was reached.

My Docker compose file looks like this

version: "3.5"
networks:
  my-network:
    name: my_network

services:
  partners:
    image: partners.api:latest
    container_name: partners
    build:
      context: ./
    restart: always
    ports:
      - "8081:80"
    environment:
      - ASPNETCORE_ENVIRONMENT=Docker
      - ConnectionStrings:DefaultConnection=Server=30.xx.xx.xx,39876;Database=PartnersDb;User Id=don;Password=Passwor123$
    networks:
      - my-network
    volumes:
      - /Users/mine/Desktop/logs⁩:/logs

I have

bin bashed into the running container and I’m able to run pings to the remote sql database server
I’ve also being able to telnet to the remote sql database server on the database port
However, problem arises when i do docker-compose up then I get the error above. Docker version 19.03.5, build 633a0ea is running on MacOS Mojave 10.14.6

I really do not know what to do at this stage.

Hi, did you ever get a response to your question? I am facing a very similar challenge as well.
Best regards

1 Like

Hello,

Few things to check

  1. check your total connection pull.
  2. check if connections are being opened and closed properly.
  3. use the finally block to close the connection always

hope this will help to debug further

The problem turned out to be with the base dotnet image I was using. Try with another image.

1 Like