EF核心迁移使用asp.net核心,SQL Server和Docker产生dotnet SDK错误

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

Windows 10专业版

Visual Studio代码


我已经使用yeoman生成器创build了一个使用Docker的ASP.NET Core项目:

yo aspnet yo docker 

当我试图让API从Docker容器连接到我本地运行的SQL Server实例时,遇到了一些问题。

为了解决这个问题,我创build了一个在自己的容器中运行的SQL Server实例(使用microsoft/mssql-server-linux映像)。

两个容器都在运行,并连接到同一个用户定义的网桥。

如果我打开我的asp.net核心容器中的bashterminal并运行命令:

 dotnet ef migrations add InitialMigration 

我希望我的代码优先模型将在运行在networking上的SQL Server实例中创build,因为当我在本地运行安装程序(无容器)时会发生这种情况。 相反,我得到如下:

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

我很困惑,因为我必须安装dotnet。 我已经使用microsoft/aspnetcore作为我的Dockerfile中的基础层,我可以看到,这反过来使用microsoft/dotnet:1.0.3-runtime因为它的基本层…

有人可以解释为什么我得到这个消息,如果我正在接近这个解决scheme正确的方式(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的图像