问题描述
我正在尝试在 Visual Studio(.NET 核心 Web 应用程序)中创建登录 Web 应用程序。我正在使用 Azure Data Studio(ADS) 连接到应用程序的本地数据库。但是当我使用 docker 运行应用程序时,Web 应用程序加载成功,但无法加载本地数据库。
现在,在网上找了一些解决方案后,我在 Docker 上拉取了 sql Server 2019 容器的映像并将其连接到 ADS。我无法在 Visual Studio 中设置到 ADS 上 docker 内托管的 sql Server 数据库的连接字符串。
有人可以提供有关如何在 ADS 上的 Docker 内设置登录应用程序和 sql 服务器容器之间的连接的任何线索吗?
Nugget 包管理器控制台中的错误消息
解决方法
这是Connecting to SQL Server container hosted inside Docker
的方式之一。
假设您已经执行了下面提到的命令来执行 SQL Server 2019
容器。
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Sample123$" -p 1433:1433 --name mssql2019indocker -d mcr.microsoft.com/mssql/server:latest
Azure 数据洞察:
您可以使用 server=localhost
、Authentication Type=SQL Login
、User name = sa
和 password = Sample123$
。这些详细信息基于您执行的创建容器的命令。请参考下图。
用于登录 SQL Server 2019 Docker 容器的 Azure Data Studio
注意:如果您使用 EF Core 工具迁移数据库,则服务器应为“localhost”,如 Azure Data Studio 登录图像中所示。
.NET Core 应用程序连接到 Docker 容器
这里的情况是 .NET core
应用程序正在一个 Docker 容器中执行,而 SQL Server 2019
正在另一个容器中执行。
请执行下面提到的命令来找出 SQL Server 2019 Docker
容器的 IP 地址。请参考下图。在我的场景中,IP 地址是 172.17.0.3。
docker inspect <ContainerIdOfSQLServer2019>
获得IP地址后,请在下面提到的连接字符串中更新它。
Server=<IPAddressOfTheSqlServer2019DockerContainer>;Database=myDataBase;User Id=myUsername;Password=myPassword;