在OSX中的Docker容器中缺lessDotnet Antiforgery DLL

我有这样的想法,有一个docker容器挂载一个已经编译好的aspnet核心1.1应用程序的文件夹。

当我这样做的文件丢失。 什么是最好的方式,使其不失踪?

如何重新创build问题:

在我的OSX主机上,我创build一个文件夹/myrootedpath/TheApp

 dotnet new -t web dotnet restore dotnet run 

创build并启动我的Hello World应用
(我可以curl localhost所以我知道它在主机中工作。)
我用ctrl-c停止服务器。

然后我创build一个容器来装载提到的文件夹,编译并启动Web服务器

 docker run -p 80:80 -ti \ -v /myrootedpath/TheApp:/theapp microsoft/dotnet \ /bin/bash -c 'cd /theapp; dotnet run' 

但它停止了

Project应用程序(.NETCoreApp,版本= v1.1)是以前编译的。 跳过编译。

错误:未find依赖项清单中指定的程序集 – 程序包:'Microsoft.AspNetCore.Antiforgery',版本:'1.0.1',path:'lib / netstandard1.3 / Microsoft.AspNetCore.Antiforgery.dll'

我看到Antiforgery.dll丢失。
我想我可以find它并复制它并创build一个新的图像。
这是一个推荐的解决scheme?

UPDATE

当我开始赏金时,我想澄清一下,这个问题归结为执行在容器外部编译的dotnet核心代码需要什么。

当我运行dotnet restore (在我的Win机器上),我发现软件包下载/复制不是项目文件夹,而是<userhome>/.nuget/packages/

所以,你的docker镜像仍然没有你通过dotnet restore下载到你的主机上的包(因为dotnet run只能编译app本身,而不需要复制依赖)。

你应该:

  1. 使用dotnet publish来创build“ready-to-run”distrib,并在容器中运行它;
  2. 或者,在更改依赖关系(每次)时至less在Docker镜像中运行dotnet restore ;
  3. 或者,将主机系统中的packages文件夹映射到docker中。