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

时间:2017-01-12 15:47:00

标签: sql-server docker asp.net-core entity-framework-core

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

Windows 10 Pro

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"

1 个答案:

答案 0 :(得分:2)

您正在使用的

microsoft/aspnetcore:1.1.0基于microsoft/dotnet:1.1.0-runtime。它仅包含.NET Core运行时,而不包含SDK。要执行runef和其他工具等命令,您需要one of sdk-based images