簡體   English   中英

ASP.NET Core Mac Docker 上運行的 SQL Server 的連接字符串是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM