为了解决现有ASP.NETCore2.1MVC应用程序的问题,我想使用Docker在同一台服务器上托管一个简单的helloworldASP.NETCoreMVC应用程序,所以我创建了一个小的Docker文件:
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核心MVC的默认模板只包含几个包。
2条答案
按热度按时间zyfwsgd61#
值得注意的是,
dotnet
持续使用CPU资源,另一个引用多个NuGet资源的项目在10秒后恢复。因此,这不是网络问题,这表明NuGet正在执行某些操作。我发现this question中有一个大的项目文件夹,因为它扫描整个文件夹,所以NuGet的速度似乎变慢了。这似乎也适用于我,因为我的快速测试是在容器的根文件系统中完成的。所以修复方法是简单地为项目创建一个子目录:
现在NuGet在几秒钟后完成了包的恢复。总是使用一个干净的子目录,即使它是一个快速和肮脏的测试容器,它(理论上)应该不重要...
kxkpmulp2#
我在Windows 2019容器主机上的Docker中遇到了这个问题。恢复需要10分钟以上,而在我自己的机器上需要大约5秒。我发现MsMgEng.exe(Defender)进程正在扫描dockerd.exe(Docker守护程序)。CPU使用率为98%。
我很确定这只是Docker守护程序,但我也在排除列表中添加了docker.exe和gitlab-runner.exe。
13分钟的恢复时间已经成为过去!这就解决了这个问题。你不需要任何特殊的参数,条件或标志来进行你的网络恢复。