首页 > 解决方案 > 如何使用 .NET Core 应用程序在 Docker 中填充 SQL Server 数据库?

问题描述

我有一个 .NET Core 应用程序,当通过dotnet run命令运行它时,它会根据其自动填充数据库ConnectionStringappSettings.json如下所示:

"ConnectionStrings": {
  "DefaultConnection": "Server=localhost,21433;Initial Catalog=DemoDb;User Id=demo;Password=******;"
},

由于我的 Docker 容器中已经有一个 SQL Server 数据库,因此我想使用现有的服务器容器并将新数据库填充到 Docker 中。当我运行应用程序时,新数据库已填充,但应用程序未初始化。

我使用与上述相同的端口号,ConnectionString但是在运行应用程序时会抛出“底层异常消息是'无法建立连接,因为目标机器主动拒绝它。(localhost:4200)'”错误。我认为这与在此容器中使用与其他数据库相同的端口有关。

在这一步:

抱歉,我是 Docker 新手。

标签: sql-serverangulardockerasp.net-core.net-core

解决方案


Docker 的性质表明,如果数据库不相关,那么它们应该存在于单独的容器中。

如果需要在数据库之间进行交互,那么将它们放在同一个容器内的同一个实例上就可以了。

该端口用于实例 - 不是单个数据库,但您需要在代码中包含一些标识所需数据库的内容 - 无论是USET-SQL 代码中的语句还是到新数据库的显式连接。

您将用户定义在什么范围内?它是包含的数据库用户吗?如果是这样,那么您必须在连接字符串中指定正确的数据库 - 如果它在实例级别作为登录名,那么没关系,但它必须映射到该登录名的新数据库中的数据库用户。


推荐阅读