【发布时间】:2021-03-27 16:27:28
【问题描述】:
尝试对在 Docker 上运行的 Rest API 执行请求时出现此错误:
Microsoft.Data.SqlClient.SqlException (0x80131904):网络相关 或在建立连接时发生特定于实例的错误 SQL 服务器。服务器未找到或无法访问。核实 实例名称正确且 SQL Server 配置为 允许远程连接。 (提供者:TCP 提供者,错误:35 - An 内部异常被捕获)---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (00000005, 0xFFFDFFFF): 名称或服务未知
这是我的连接字符串:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"DefaultConnection": "server=sqlserver,1433;Database=Test;Trusted_Connection=False;ConnectRetryCount=0;User Id=sa;Password=Password3784"
}
}
这是我的 docker-compose.yml:
version: '3.4'
services:
test:
image: ${DOCKER_REGISTRY-}test
build:
context: .
dockerfile: Test/Dockerfile
sqlserverService:
image: microsoft/mssql-server-linux:2017-latest
hostname: 'sqlserver'
environment:
ACCEPT_EULA: Y
SA_PASSWORD: "Password3784"
volumes:
- ./data/mssql:/var/opt/mssql3
ports:
- '1433:1433'
expose:
- 1433
在我的计算机上使用 SQL Server Management Studio 登录并使用此凭据可以正常工作。 本地主机,1433 萨 密码3784
【问题讨论】:
-
ports已经将端口暴露给 swarm 中的容器,所以expose似乎是多余的。如果只使用端口 1433:1433 会改善吗? -
它可以通过 IP 工作吗?
-
我已经删除了端口 1433:1433 但没有任何变化。 @AlwaysLearning
-
如何知道Docker建立的IP?这是我第一次使用它。 @RandyinMarin
标签: sql-server docker .net-core