我正在使用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"
答案 0 :(得分:2)
microsoft/aspnetcore:1.1.0
基于microsoft/dotnet:1.1.0-runtime
。它仅包含.NET Core运行时,而不包含SDK。要执行run
,ef
和其他工具等命令,您需要one of sdk
-based images