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.
答
最有可能您的服务器名称为localhost和端口1401(这是码头工人容器设置默认值)。因此,您需要使用以下连接字符串:
"Default": "Server=localhost,1401; Database=ERPDb; User=sa; Password =******;"
是在容器内运行的sql服务器吗?连接代码是否也在容器中运行?如果对两者都是,他们是在同一个网络上,如果没有,服务器的SQL端口是否暴露? –
@omu_negru sql服务器正在容器中运行。应用程序在机器内部运行,而不在容器内部。如何公开SQL端口?你能指导我吗? – user2695433
通过将-p参数传递给docker run命令来公开该MySql端口:docker run -p 3306:3306 .......另外,将主机设置为localhost,然后您可以通过运行docker来检查端口是否被公开ps并检查右侧的端口部分。 –