【发布时间】:2019-05-29 05:28:22
【问题描述】:
我们有一个 ASP.NET Core 2.2 应用程序,它与托管在单独服务器上的后端数据库完美配合。所有 CRUD 操作都完美无缺。我们将应用程序 docker 化,但我们开始收到以下错误消息:
与 SQL Server 建立连接时出现与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)
docker compose 文件如下代码:
version: '3.4'
services:
services.webapi:
image: ${DOCKER_REGISTRY-}serviceswebapi
build:
context: .
dockerfile: Services.WebApi\Dockerfile
network: host
此配置可能有什么问题阻碍了应用程序与 SQL Server 实例通信?
更新 1:SQL Server 未 dockerized。
UPDATE 2:应用程序从其 appsettings.json 文件中读取 SQL 连接字符串。这是重命名服务器名称和凭据后的连接字符串:
Server=WIN-MSSQL1\\MSSQLSERVER2017;Initial Catalog=ServiceDB;User ID=cruduser;Password=foo;Connect Timeout=60;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False
【问题讨论】:
-
是完整的compose文件还是更多的服务? SQL 也被 docker 化了?
-
是的,这就是完整的撰写文件。 SQL 服务器未 docker 化。
-
dockerized 应用程序如何知道如何访问 SQL 服务?我的意思是在配置文件中有 SQL 服务器的主机名?如果是,您可以尝试在 docker 的 hosts 文件中添加一个额外的主机,选项为:'extra_hosts: - "somehost:162.242.195.82"'
-
请参阅我发布连接字符串的问题中的更新 2。
-
只是为了确认:您是否能够在 docker 之外的控制台应用程序中使用完全相同的连接字符串并确认连接有效?
标签: c# sql-server docker asp.net-core docker-compose