2017-08-16 40 views
7

我使用帶有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並檢查右側的端口部分。 –

回答

0

最有可能您的服務器名稱爲localhost和端口1401(這是碼頭工人容器設置默認值)。因此,您需要使用以下連接字符串:

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