使用asp.net核心,SQL Server和Docker的EF Core遷移會產生dotnet SDK錯誤

asp.net-core docker entity-framework-core sql-server

我正在使用Docker for Windows版本1.13.0-rc5-beta35(9606)

Windows 10專業版

Visual Studio代碼


我使用yeoman生成器使用Docker創建了一個ASP.NET Core項目:

yo aspnet
yo docker

當我試圖讓API從Docker容器連接到我在本地運行的SQL Server實例時遇到了問題。

為了解決這個問題,我創建了一個在其自己的容器中運行的SQL Server實例(使用microsoft/mssql-server-linux映像)。

兩個容器都在運行,並且連接到同一個用戶定義的橋接網絡。

如果我在我的asp.net核心容器中打開一個bash終端並運行命令:

dotnet ef migrations add InitialMigration

我希望我的Code First模型將在網絡上運行的SQL Server實例中創建,因為當我在本地運行設置(沒有容器)時會發生這種情況。相反,我得到以下內容:

Did you mean to run dotnet SDK commands? Please install dotnet SDK from:
http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409

我很困惑,因為我雖然必須安裝dotnet。我在我的Dockerfile中使用了microsoft/aspnetcore作為基礎層,我可以看到這反過來使用microsoft/dotnet:1.0.3-runtime作為它的基礎層......

有人可以解釋為什麼我得到這個消息,如果我正在以正確的方式接近這個解決方案(web api和sql server在不同的容器中)?如果我確實需要安裝dotnet sdk,如果有人能告訴我如何將其作為Dockerfile的一部分,我將不勝感激

謝謝你的幫助


asp.net核心Dockerfile的內容

FROM microsoft/aspnetcore:1.1.0
WORKDIR /app
COPY bin/Debug/netcoreapp1.1/publish /app
ENV ASPNETCORE_URLS http://*:3000
EXPOSE 3000

ENTRYPOINT /bin/bash -c "dotnet MyAppName.dll"

熱門答案

您正在使用的microsoft/aspnetcore:1.1.0基於microsoft/dotnet:1.1.0-runtime 。它僅包含.NET Core運行時,而不包含SDK。要執行runef和其他工具之類的命令,您需要一個基於sdk的圖像



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow