Docker容器中sqlserver的连接字符串

问题描述:

我使用带有dotnet Core和EF Core的Mac的Visual Studio 2017。在Docker容器中设置mssql图像后,我试图添加连接字符串,但引发连接错误。我尝试了不同的选项,如IP地址,容器名称,主机名等作为服务器名称,但都没有工作。Docker容器中sqlserver的连接字符串

"Default": "Server=172.17.0.2; Database=ERPDb; User=sa; Password =******;" 

与容器名称

"Default": "Server=ecstatic_hermann; Database=ERPDb; User=sa; Password=******;" 

与主机名:

"Default": "Server=f45840a59623; Database=ERPDb; User=sa; Password=******;" 

虽然通过连接在终端使用本地主机的连接成功

$ mssql -s localhost -p Technocrat123 
Connecting to localhost...done 

sql-cli version 0.6.2 
Enter ".help" for usage hints. 

但在运行时APPLICAT连接失败。

感谢任何帮助。提前致谢。

如果使用本地主机则误差

Login failed for user ''. Reason: An attempt to login using SQL authentication failed. Server is configured for Integrated authentication only. 
+0

是在容器内运行的sql服务器吗?连接代码是否也在容器中运行?如果对两者都是,他们是在同一个网络上,如果没有,服务器的SQL端口是否暴露? –

+0

@omu_negru sql服务器正在容器中运行。应用程序在机器内部运行,而不在容器内部。如何公开SQL端口?你能指导我吗? – user2695433

+0

通过将-p参数传递给docker run命令来公开该MySql端口:docker run -p 3306:3306 .......另外,将主机设置为localhost,然后您可以通过运行docker来检查端口是否被公开ps并检查右侧的端口部分。 –

最有可能您的服务器名称为localhost和端口1401(这是码头工人容器设置默认值)。因此,您需要使用以下连接字符串:

"Default": "Server=localhost,1401; Database=ERPDb; User=sa; Password =******;"