【问题标题】:dotnet restore comand into Dockerfile always finish with Exceptiondotnet restore 命令到 Dockerfile 总是以异常结束
【发布时间】:2020-07-03 11:42:58
【问题描述】:

在我的解决方案中,我使用了 docker。 当我尝试构建我的图像时,每次我收到错误:

将构建上下文发送到 Docker 守护进程 77.32MB

Step 1/16 : FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
 ---> 014a41b1f39a
Step 2/16 : WORKDIR /app
 ---> Using cache
 ---> c3eb79db5e63
Step 3/16 : EXPOSE 80
 ---> Using cache
 ---> f23ddd06f8f8
Step 4/16 : FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
 ---> 006ded9ddf29
Step 5/16 : WORKDIR /src
 ---> Using cache
 ---> d8016eaadf87
Step 6/16 : COPY ["ProductCatalogApi.csproj", "src/Services/ProductCatalogApi/"]
 ---> 59d2cc3f4102
Step 7/16 : RUN dotnet restore "src/Services/ProductCatalogApi/ProductCatalogApi.csproj"
 ---> Running in 347a48e8ef6f
  Determining projects to restore...

     Retrying 'FindPackagesByIdAsync' for source 'https://api.nuget.org/v3-flatcontainer/system.resources.resourcemanager/index.json'.
      The SSL connection could not be established, see inner exception.
         Received an unexpected EOF or 0 bytes from the transport stream.
      Failed to download package 'System.IO.Compression.ZipFile.4.3.0' from 'https://api.nuget.org/v3-flatcontainer/system.io.compression.zipfile/4.3.0/system.io.compression.zipfile.4.3.0.nupkg'.
The command '/bin/sh -c dotnet restore "src/Services/ProductCatalogApi/ProductCatalogApi.csproj"' returned a non-zero code: 1

Dockerfile 有下一段代码:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY ["src/Services/ProductCatalogApi/ProductCatalogApi.csproj", "src/Services/ProductCatalogApi/"]
RUN dotnet restore "src/Services/ProductCatalogApi/ProductCatalogApi.csproj"
COPY . .
WORKDIR "/src/Services/ProductCatalogApi"
RUN dotnet build "ProductCatalogApi.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "ProductCatalogApi.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "ProductCatalogApi.dll"]

我的 .csproj 文件:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RootNamespace>ShoesOnContainers.Services.ProductCatalogApi</RootNamespace>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
    <DockerfileContext>..\..\..</DockerfileContext>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.5" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.5" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.5" />
    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.9.10" />
    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.9.10" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.3" />
    <PackageReference Include="Swashbuckle.AspNetCore" Version="5.5.1" />
  </ItemGroup>


</Project>

我整天都在尝试通过其他方式构建我的形象,并且每次收到错误。请帮助某人........

【问题讨论】:

  • Sergey,你解决了这个问题吗?如果是,请分享你如何摆脱这个大问题? bex 我也面临同样的问题。
  • 对于 netcore 3.1.0,它仍然是一个悬而未决的问题。这是问题的链接:github.com/NuGet/Home/issues/9020

标签: docker asp.net-core dockerfile asp.net-core-3.1


【解决方案1】:

我遇到了同样的错误,我试过了,它成功了。

  • 停止所有正在运行的容器docker stop $(docker ps -aq)
  • 删除所有被前面命令停止的容器docker rm $(docker ps -aq)。
  • 使用docker volume rm $(docker volume ls -q)删除所有卷
  • 最好使用docker rmi -f $(docker images -a -q) 清理所有旧的 docker 镜像
  • 或者您可以使用 Docker 桌面 UI 清除所有数据。
  • 然后您可以转到src 目录并使用docker-compose build 重新构建所有映像,然后再使用docker-compose up

!IMPORTANT 请注意,以上命令将清除所有 该环境中与 docker 相关的实例。所以不推荐 在任何生产环境或任何其他环境中运行这些 运行任何其他应用程序的 docker 实例的位置。

【讨论】:

    【解决方案2】:

    您可以使用下面的行来解决它

    RUN dotnet restore --disable-parallel
    

    同时检查here

    【讨论】:

      【解决方案3】:

      我换了这个

      FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
      

      关于这个

      FROM microsoft/aspnetcore-build:2.0.0 AS build
      

      然后替换了这个

      FROM mcr.microsoft.com/dotnet/core/sdk:3.1
      

      关于这个

      FROM microsoft/aspnetcore:2.0.0
      

      在我的 .csproj 文件 replecad 版本的 netcoreapp 从 3.1 到 2.0。 据我了解,问题出在 docker 图像的版本中。

      【讨论】:

      • 但是在这个提议的解决方案中,项目将在 .netCore 2 框架中运行,但我想在 3.1 版本而不是 2.0 中运行它,
      猜你喜欢
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 2019-04-26
      • 2012-12-16
      • 1970-01-01
      • 2020-01-16
      相关资源
      最近更新 更多