docker 的本地 sqlserver 连接

local sqlserver connection with docker

你好,我最近将我现有的 .Net 5.0 Webapi 添加到 docker 容器中,但它无法连接到我本地机器上的 SqlServer,连接字符串是

"ConnectionStrings": {
        "default": "Server=.\SomeInstance;Database=TestDatabase;User Id=SomeUser;Password=SomePassword"
    }

我得到的确切错误是:

'One or more errors occurred. (A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 25 - Connection string is not valid))'

当我将其更改为 "Server=10.0.0.108\SomeInstance;Database=TestDatabase;UserId=SomeUser;Password=SomePassword 时,它工作正常。

如何使连接字符串通用以与多个 developers/machines 一起使用并仍然使用 Docker.

我试过 Server=localhost\SomeInstance 它不起作用。

它不起作用,因为容器是 运行 它自己的网络堆栈,无法通过 localhost 寻址主机(除非您使用 host 网络驱动程序)。

如果您想保持连接字符串的通用性,您可以通过 运行 带有标志 [=] 的容器将 custom host entry 添加到 /etc/hosts 12=] 然后在连接字符串中添加名称。这样你就可以在运行时操作服务器的 ip 连接。

或者,您也可以使用特殊名称 host.docker.internal 从容器中寻址主机。

我想通了。

Server=host.docker.internal\SomeInstance;Database=TestDatabase;UserId=SomeUser;Password=SomePassword 做了我想做的事。