将.net核心应用程序部署到docker会发现"Microsoft.DotNet.Props"未找到错误

Pur*_*aik 4 docker .net-core dockerfile docker-compose asp.net-core

我有Windows 10 Home操作系统.我已经安装了Docker工具箱.我想将我的.net核心应用程序部署到Docker.我参考以下有用的文章创建了我的Docker文件:https: //stormpath.com/blog/tutorial-deploy-asp-net-core-on-linux-with-docker

我的docker文件如下:

FROM microsoft/dotnet:latest
COPY . /app
WORKDIR /app

RUN ["dotnet", "restore"]
RUN ["dotnet", "build"]

EXPOSE 5000/tcp
ENV ASPNETCORE_URLS http://*:5000

ENTRYPOINT ["dotnet", "run"]
Run Code Online (Sandbox Code Playgroud)

但是当我运行时,用于创建图像的docker命令,它给了我错误.

user@machine_name MINGW64 path to solution
$  docker build -t helloWorld:core .
Run Code Online (Sandbox Code Playgroud)

错误:

/app/Web.xproj(7,3): error MSB4019: The imported project "/usr/share/dotnet/sdk/1.0.0-rc4-004771/Microsoft/VisualStudio/v14.0/DotNet/Microsoft.DotNet.Props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
The command 'dotnet restore' returned a non-zero code: 1
Run Code Online (Sandbox Code Playgroud)

有人可以指导,这里出了什么问题,因为我对Docker来说是全新的.

Set*_*Set 5

正如我Web.xproj在您的错误中看到的那样,看起来您遇到了与此github问题中描述的问题相同的问题.这种问题的根源是,微软更新了自己的码头工人,其移回最新的SDK .csprojproject.json.解决方案是使用另一个1.1-sdk-projectjson标签:

FROM microsoft/dotnet:1.1-sdk-projectjson
Run Code Online (Sandbox Code Playgroud)

关于microsoft/dotnet / docker页面的注意事项:

latest标签不再使用project.json项目格式,但现在已经更新到被的csproj /为主的MSBuild.如果您不希望将现有项目迁移到MSBuild,只需将Dockerfile更改为使用1.1.0-sdk-projectjson1.1.0-sdk-projectjson-nanoserver标记.展望未来,新的.NET Core sdk图像将基于MSBuild.