从容器化 Asp.net 核心应用程序连接本地 SQL 服务器数据库

Connect local SQL Server database from the containerized Asp.net Core Application

我有一个非常简单的“hello world”类 Asp.net 核心 API 应用程序(包括 swagger),我在其中单击一个 API 控制器,它从数据库中获取数据,然后returns 为 JSON。我已经通过调试器测试了它在我的系统上的工作情况,进入 docker.

一切都很好

我已经创建了一个 docker 文件(不是 docker 组合)并最终构建图像 运行 docker 容器并检查应用程序确实可以访问。但是,从数据库中获取数据的 API 控制器,该端点失败。 我已经尝试了所有可能的选项,例如

  1. https://medium.com/@vedkoditkar/connect-to-local-ms-sql-server-from-docker-container-9d2b3d33e5e9
  2. How do I connect the local SQL Server database for the ASP.NET Core application running inside either local Docker or Kubernetes?

我有最新的 docker 版本(20.10.2,内部版本 2291f61),它支持 host.docker.internal,但它也不起作用。

我在禁用防火墙后尝试过,使用了端口为 1433 的 IP 地址,使用了 host.docker.internal 并且到处都出现了连接数据库的相同错误。 好吧,我尝试使用相同的 IP 地址并通过 SQL Management Studio 进行本地连接,并确认我在输入用户名、密码或 SQL 服务器和数据库方面有任何错误。

我有一个 asp.net 核心 API 应用程序,其中连接字符串存储在 appsettings.json 下。

None 的建议方法有效。有什么不同的选择/线索吗?

尝试运行容器在主机网络

docker run --network host myimagename myappcontainer

这样 myappcontainer 就可以访问您计算机上的 mssql 运行ning。