【发布时间】:2020-03-13 01:02:03
【问题描述】:
我有一个容器托管的 ASP.NET Core 应用程序,但它无法连接到远程服务器上的 SQL Server。
错误是:
与 SQL Server 建立连接时出现与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,并且 SQL Server 已配置为允许远程连接。
这是我已经检查过的:
- 尝试禁用主机和数据库服务器上的防火墙。 : 还是报错
- 编辑连接字符串以使用 IP 和端口:仍然出现错误
- 从应用程序容器 Ping 到 DB 服务器:我可以正常 ping 到 DB 服务器
- 通过SQL Server Management Studio连接数据库服务器:可以正常连接
所以我认为容器可以看到数据库服务器但无法连接。我还应该检查什么?
非常感谢您的帮助。
更新
Dockerfile:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 1433
#our sql server was use this port for connect
EXPOSE 64608
FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build
WORKDIR /src
COPY Web.API.sln ./
COPY MyProject.Core/*.csproj ./MyProject.Core/
COPY MyProject.API/*.csproj ./MyProject.API/
RUN dotnet restore
COPY . .
WORKDIR /src/MyProject.API
RUN dotnet build -c Release -o /app
FROM build AS publish
RUN dotnet publish -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "MyProject.API.dll"]
运行 Docker 命令:
docker build -t myproject-api:latest .
docker run -d -p 7991:80 --name myproject-api myproject-api:latest
连接字符串:
"data source=172.16.0.88\\SQL_DEV,64608; initial catalog=MyProject; persist security info=True; user id=myuser; password=mypassword;"
【问题讨论】:
-
假设远程 SQL Server 是侦听端口 1433 的默认实例,请使用
powershell -Command echo ((new-object Net.Sockets.TcpClient).Client.Connect('your-database-server', 1433)) 'success'从容器内部检查远程端口连接 -
发布 Docker 文件和用于运行容器的命令。
-
@DanGuzman 谢谢你的建议。我对 Docker 很陌生。在我了解如何在我的容器中运行 powershell 命令后,我将尝试它。
-
@Max 我已经在帖子中更新了 docker 文件和命令。谢谢。
-
@LLF 尝试删除所有
EXPOSE 1433, EXPOSE 64608。这些是不需要的。你能提供设置吗,你是如何创建连接字符串的?
标签: sql-server docker asp.net-core