[英]What is the connection string for SQL Server running on Mac Docker in ASP.NET Core?
我正在嘗試在 MAC 上完成關於 Pluralsight 的 ASP.NET 核心教程。 我正在使用 Docker 運行 MSSQL 服務器,它似乎可以正常工作(我已經啟動並運行了 sql 數據庫,如此處所示)
第二步是讓我的 asp.net 核心應用程序連接到這個 mssql 數據庫。 這是我在 appsettings.json 中的連接字符串:
"ConnectionStrings": {
"OdeToFood2Db": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=OdeToFood2;Integrated Security=True"
}
這是我在 startup.cs 中對 ConfigureServices() 的配置:
services.AddDbContextPool<OdeToFood2DbContext>(
options =>
{
options.UseSqlServer(Configuration.GetConnectionString("OdeToFood2Db"));
}
);
然后我試着跑
dotnet ef dbcontext info -s ../OdeToFood2/odeToFood2.csproj
但我得到了
Build started...
Build failed. Use dotnet build to see the errors.
錯誤。 我認為問題是我的連接字符串錯誤,因為我在 docker 上運行我的 mssql,而不是像我正在關注的教程那樣在本地運行。
如果有人能給我指明正確的方向,那肯定會有所幫助,我已經在這個問題上停留了 5 天了,這真是令人痛苦。 提前致謝!
"ConnectionStrings": {
"MyWindowsConnection": "Server=(localdb)\\mssqllocaldb;Database=TestWinMac;Trusted_Connection=True;",
"MyMacConnection": "Server=localhost,1433;Initial Catalog=TestWinMac;User ID=SA;Password=MyP@ssword"
}
請參閱我的標題為“MyMacConnection”的連接。 1433 是端口。 我有一個項目存在於 Mac 和 Windows 機器上,我根據我使用的平台切換連接字符串。
Docker 在您的機器上運行自己的內部虛擬網絡,發現 SQL 容器的 IP/主機名應該會有所幫助,因為從技術上講,您的 SQL 實例是在容器內運行的。
在您的 docker 機器上運行
docker ps
這應該列出所有正在運行的容器,其中之一應該是您的 SQL 容器。 輸出應類似於:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a8b6facb199c SQL-Image "some command" X days ago Up X days 8080 sqlserver
感興趣的是端口和名稱字段。 您的端口字段應至少列出一個端口,這可能是您使用的 SQL 提供程序的默認值,但也可能不是。
我們現在有了要嘗試連接的端口,現在我們需要 IP 地址。 運行以下命令,其中是上一個命令中name字段的值(或使用容器 ID)
docker inspect <image-name>
這將轉儲您的容器的屬性,包括 IP 地址,這可能是 172.x IP 地址。
現在我們有了端口和 IP 地址,您應該能夠修改連接字符串以指向這些值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.