docker - 在ubuntu上构建dotnet core 3.0依赖时资源暂时不可用
问题描述
我有一个 .net core 3.0 项目,我正在尝试 dockerise。调用的工程文件SuperSecretProject.csproj
如下:
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<StartupObject>SuperSecretProject.Program</StartupObject>
<UserSecretsId>cee96675-39d5-486b-bcca-9db409d1d0c4</UserSecretsId>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<DockerfileContext>.</DockerfileContext>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.Extensions.Http.Polly" Version="3.0.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="3.0.0" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.9.5" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="3.1.0" />
</ItemGroup>
</Project>
泊坞窗文件是:
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS debug
WORKDIR /build-debug
COPY ./SuperSecretProject.csproj ./
RUN dotnet restore
ENTRYPOINT ["echo", "hello"]
但是,在构建时,我得到了Resource temporarily unavailable.
例如
docker build -f ./docker/Dockerfile . -t test
:
Step 4/5 : RUN dotnet restore
---> Running in d4ca119fa22c
Retrying 'FindPackagesByIdAsync' for source 'https://api.nuget.org/v3-flatcontainer/microsoft.extensions.logging.abstractions/index.json'.
Resource temporarily unavailable
Retrying 'FindPackagesByIdAsync' for source 'https://api.nuget.org/v3-flatcontainer/system.threading.tasks.extensions/index.json'.
Resource temporarily unavailable
....
一些研究表明,docker 对可以运行的任务数量有限制:https ://success.docker.com/article/how-to-reserve-resource-temporarily-unavailable-errors-due-to-tasksmax -setting 但是这个修复似乎不起作用。
注意:如果将步骤 4 更改为,我可以成功构建 docker 映像,dotnet restore --disable-parallel
但对于较大的项目,构建时间会变得太长。如果所有async
任务dotnet restore
都可以并行完成,那就太好了。
解决方案
重新启动 docker 守护进程有帮助。
供参考: https ://forums.docker.com/t/dotnet-restore-fails-when-building-in-docker-container/95386
推荐阅读
- javascript - 无法在函数外获取 Javascript 中的输入值
- python - Python argparse - 将父解析器参数分组
- firebase - 如何使用 Firebase 托管来托管图像?
- python - Keep substring from a long string in python?
- java - 选择哪里参数=?但如果?是空格,返回该列的任何值
- swift - iOS:USDZ 文件中的闪电问题
- vhdl - 在 Vivado 2018 的 systemverilog 测试平台中使用带有阵列端口的 VHDL 实体
- r - 如何在 R 中绘制具有 3 个输入变量的 3-D 图?
- javascript - 显示带有下拉按钮的现有 div?
- python - 根据特征值的数量 (n) 绘制 nxn 矩阵的特征值