我有一个。net Core应用程序,当通过dotnet run
命令运行它时,它会根据appSettings.json
中的ConnectionString
自动填充数据库,如下所示:
"ConnectionStrings": {
"DefaultConnection": "Server=localhost,21433;Initial Catalog=DemoDb;User Id=demo;Password=******;"
},
因为我已经有一个SQL Server数据库在我的Docker容器中,我想使用现有的服务器容器,并在Docker中填充新的数据库。当我运行应用程序时,新数据库被填充,但应用程序没有初始化。
我使用上面的ConnectionString
相同的端口号,但是当运行应用程序时,它抛出"潜在的异常消息是'无法连接,因为目标机器主动拒绝它。(localhost: 4200)">错误。我认为这与该容器中的其他数据库使用相同的端口有关。
在这一步:
我应该为这个新数据库创建一个新的容器,还是为两个数据库使用相同的SQL Server容器?
我可以在Docker上使用与先前安装的数据库相同的端口吗?或者我应该用连接字符串中的另一个端口更改它?
对不起,我是新来的Docker。
Docker的特性表明,如果数据库是不相关的,那么它们应该存在于单独的容器中。
如果需要在数据库之间进行交互,那么将它们放在同一个容器中的同一个实例上是可以的。
端口是用于实例的,而不是单个数据库,但是你需要在你的代码中有一些东西来标识你需要的数据库——无论是T-SQL代码中的USE
语句还是到新数据库的显式连接。
你在什么范围定义了你的用户?是一个包含的数据库用户吗?如果是这样,那么你必须在连接字符串中指定正确的数据库-如果它是在实例级别作为登录,那么这无关紧要,但它必须映射到新数据库中的数据库用户。