docker - 在ubuntu上构建dotnet core 3.0依赖时资源暂时不可用

标签 docker ubuntu asynchronous .net-core

我有一个 .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>

docker 文件是:
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 步更改为 dotnet restore --disable-parallel,我可以成功构建 docker 镜像但是对于更大的项目,构建时间变得太长了。如果所有 async dotnet restore 中的任务可以并行进行。

最佳答案

重新启动 docker 守护进程有帮助。
以供引用:
https://forums.docker.com/t/dotnet-restore-fails-when-building-in-docker-container/95386

关于docker - 在ubuntu上构建dotnet core 3.0依赖时资源暂时不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59476800/

相关文章:

php - 在 Laravel 中使用 docker setlocale

windows - 在docker容器中创建D盘

java - 在主线程中等待 HTTP 请求

iphone - 如何将 cfnetwork 和其他框架添加到您的项目中以进行异步传输 - iphone

docker - 如何防止github.com/ory/dockertest将容器分配给随机端口?

docker - Omnisharp 在使用 docker 时无声地崩溃

sockets - 在 ubuntu 的 openssl 套接字编程中未定义对 err_exit 、berr_exit..etc 的引用

linux - 等待机器启动时超时!! Vagrant-虚拟盒子

c++ - 如何在 Ubuntu 中将 C++ 编译为 Windows 的 .net Dll 文件

ios - 如何检查访问 token 是否仍然有效?