connection string for sqlserver in Docker container

后端 未结 5 1672
無奈伤痛
無奈伤痛 2020-12-29 18:55

I\'m using Visual Studio 2017 for mac with dotnet Core and EF Core. After setting up the mssql image in Docker container , I was trying to add the connection string but thr

相关标签:
5条回答
  • 2020-12-29 19:25

    Most likely your server name is localhost and port 1401 (which is the default for Docker container setup). Therefore, you'll need to use the following connection string:

    "Default": "Server=localhost,1401; Database=ERPDb; User=sa; Password =******;"
    
    0 讨论(0)
  • 2020-12-29 19:31

    Rather than use IP addresses, which would be problematic in a team environment, you can also use host.docker.internal which will resolve to your host IP.

    Data Source=host.docker.internal,1433;Initial Catalog=MyDB;User ID=MyUser;Password=MyPassword
    
    0 讨论(0)
  • 2020-12-29 19:33

    I just wrote up a blog post on this. Take a look at richminchuk.io. Otherwise:

    sudo docker pull microsoft/mssql-server-linux:2017-latest
    docker run \
       -e 'ACCEPT_EULA=Y' \
       -e 'MSSQL_SA_PASSWORD=YourSTRONG!Passw0rd' \
       -p 1401:1433 \
       -n sql1 \
       -d microsoft/mssql-server-linux:2017-latest
    

    then,

    private static string _connStr = @"
       Server=127.0.0.1,1401;
       Database=Master;
       User Id=SA;
       Password=YourSTRONG!Passw0rd
    ";
    
    0 讨论(0)
  • 2020-12-29 19:33

    I solved it by using SQL server Container IP address by inspecting the sql server container for its IP address as shown below

    docker inspect -f "{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}" <ContainerID | ContainerName>
    
    0 讨论(0)
  • 2020-12-29 19:38

    I had this problem today and I resolved it using a separate network (instead of using default "bridge" network).

    1. docker network create test_network

    2. docker container run -p 1433:1433 -d --name mssql -v mssql_data:/var/opt/mssql -e SA_PASSWORD=********** -e ACCEPT_EULA=Y --network=test_network microsoft/mssql-server-linux

    3. docker container run -p 5000:80 --rm -e ASPNETCORE_ENVIRONMENT=Development --name aspnetcore --network=test_network aspnetcore-image

    Also I have such connection string:

    Server=mssql;Database=master;User=sa;Password=**********;
    

    About previous answers regarding Connection String with IP address, it is not a good approach, because this address can be changed dynamically, it is better to use container names, as hostnames.

    0 讨论(0)
提交回复
热议问题