Windows上的Docker从dotnetcore app

时间:2016-10-18 20:58:26

标签: docker asp.net-core

我使用asp.net核心构建了一个简单的api,它从sql server数据库返回一些数据。

它在VS和命令行中运行良好,但是当我在我的Windows 10机器上构建并运行应用程序作为docker容器时,我调用api我一直收到此错误

  

System.Data.SqlClient.SqlException:连接超时已过期。该   在登录后阶段过去了超时时间。连接   在等待服务器完成登录时可能会超时   过程和回应;或者它可能在尝试时超时   创建多个活动连接。持续时间   尝试连接到此服务器是 - [登录前]   初始化= 425;握手= 265; [登录]初始化= 5;   认证= 9; [登录后]完成= 14034; --->   System.ComponentModel.Win32Exception:未知错误258

我不确定这告诉我什么,就好像它找不到sql server机器一样。我是否必须以某种方式在docker配置中或当我运行容器时公开端口1433

2 个答案:

答案 0 :(得分:4)

正如Tseng在评论中解释的那样,您的容器位于他们自己的网络中,而不是在您的主机网络中。您确实希望公开该端口(或映射到主机上的另一个可用端口),您可以使用Docker Compose轻松完成此操作。在下面的示例中(您在Docker-compose.yml文件中), sql 是数据库容器的名称, 1337 是本地端口, 1433 是容器的端口。

sql:
 ports:
 - "1337:1433"

答案 1 :(得分:1)

不确定我的情况是否与您的情况相同,但在我的情况下,我是从docker容器连接到在主机(real pc)上运行的sql server 2008 R2。我必须为sql server 2008 R2安装SP3来修复它。

更多信息here