gpt4 book ai didi

docker - OSX中的Docker容器中缺少Dotnet Antiforgery dll

转载 作者:行者123 更新时间:2023-12-02 18:23:35 24 4
gpt4 key购买 nike

我的想法是让docker容器在一个已经编译过的Aspnet core 1.1应用程序所在的文件夹中安装一个文件夹。

当我这样做时,文件丢失了。做到最好的方法是什么?

如何重现问题:

在OSX主机中,我创建一个文件夹/myrootedpath/TheApp

dotnet new -t web
dotnet restore
dotnet run

创建并启动我的世界网络应用程序。
(我可以 curl localhost,所以我知道它可以在主机中使用。)
我使用ctrl-c停止了服务器。

然后,我创建一个容器来装入提到的文件夹,编译并通过以下方式启动Web服务器
docker run -p 80:80 -ti \
-v /myrootedpath/TheApp:/theapp microsoft/dotnet \
/bin/bash -c 'cd /theapp; dotnet run'

但是它以

项目theapp(.NETCoreApp,Version = v1.1)先前已编译。跳过编译。

错误:找不到依赖项 list 中指定的程序集-程序包:“Microsoft.AspNetCore.Antiforgery”,版本:“1.0.1”,路径:“lib / netstandard1.3 / Microsoft.AspNetCore.Antiforgery.dll”

我看到 Antiforgery.dll丢失了。
我想我可以找到它并复制它并创建一个新图像。
这是推荐的解决方案吗?

更新

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

最佳答案

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

因此,您的docker镜像仍然没有通过dotnet restore下载到主机的软件包(因为dotnet run仅编译应用程序本身,而不复制依赖项)。

你应该:

  • 使用dotnet publish创建“准备运行”的发行版,并在容器中运行它;
  • 或,当您更改依赖关系时(每次)至少在docker镜像中运行dotnet restore一次;
  • 或,将包文件夹从主机系统映射到docker。
  • 关于docker - OSX中的Docker容器中缺少Dotnet Antiforgery dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41472047/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com