gpt4 book ai didi

c# - 在Docker中创建新的ASP.NET Core MVC应用程序时,NuGet软件包还原非常缓慢

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

为了对现有的ASP.NET Core 2.1 MVC应用程序进行故障排除,我想使用Docker在同一服务器上托管一个简单的hello world ASP.NET Core MVC应用程序。因此,我创建了一个小的Dockerfile:

FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS sdk-image
run dotnet new mvc
RUN dotnet publish -c Debug -o /publish

FROM mcr.microsoft.com/dotnet/core/aspnet:2.1 AS runtime-image
COPY --from=sdk-image /publish .
ENV ASPNETCORE_URLS=http://0.0.0.0:5000
ENV ASPNETCORE_ENVIRONMENT=Development
ENTRYPOINT ["dotnet", "WebApplication1.dll"]

但是容器卡在恢复NuGet包上:
Step 2/9 : RUN dotnet new mvc
---> Running in 54b50f10572b
Getting ready...
The template "ASP.NET Core Web App (Model-View-Controller)" was created successfully.
This template contains technologies from parties other than Microsoft, see https://aka.ms/aspnetcore-template-3pn-210 for details.

Processing post-creation actions...
Running 'dotnet restore' on /WebApplication1.csproj...

即使经过几分钟的等待,这些还原仍无法完成。 ASP.NET Core MVC的默认模板仅包含一些软件包。

最佳答案

值得注意的是,dotnet连续使用CPU资源,另一个引用多个NuGet资源的项目在10秒后得到恢复。因此,这不是网络问题,它表明NuGet在做什么。

我发现this question处的大型项目文件夹似乎会使NuGet放慢速度,因为它会扫描整个文件夹。这似乎也适用于我,因为我的快速测试是在容器的根文件系统中完成的。因此,解决方法是简单地为项目创建一个子目录:

FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS sdk-image
RUN mkdir test
WORKDIR /test
RUN dotnet new mvc

现在,几秒钟后,NuGet完成了软件包还原。吸取的教训是:始终使用一个干净的子目录,即使它是一个快速且肮脏的测试容器,从理论上讲也不重要...

关于c# - 在Docker中创建新的ASP.NET Core MVC应用程序时,NuGet软件包还原非常缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57749824/

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