Docker Buildkit --mount=type=cache 用于缓存 .NET 6 的 Nuget 包

2024-03-27

我写了一个Dockerfile使用 Docker buildx--mount=type=cache设置缓存我的 NuGet 包以加快构建速度。正如所示,这似乎在 .NET 5 中有效其他问题 https://stackoverflow.com/questions/69464184/using-docker-buildkit-mount-type-cache-for-caching-nuget-packages-for-net-5-d.

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS sdk
WORKDIR /src
COPY "ApiTemplate.sln" "."
COPY "Source/ApiTemplate/*.csproj" "Source/ApiTemplate/"
# Run the restore and cache the packages on the host for faster subsequent builds.
RUN --mount=type=cache,id=nuget,target=/root/.nuget/packages \
    dotnet restore
COPY . .
RUN dotnet build --configuration Release --no-restore
...

但是,在 .NET 6 中我收到以下错误:

 => [linux/amd64 sdk  6/10] RUN --mount=type=cache,id=nuget2,target=/root/.nuget/packages     dotnet restore                                                                                               20.9s
 => CANCELED [linux/arm64 sdk  6/10] RUN --mount=type=cache,id=nuget2,target=/root/.nuget/packages     dotnet restore                                                                                      23.0s
 => [linux/amd64 sdk  7/10] COPY . .                                                                                                                                                                        0.3s
 => ERROR [linux/amd64 sdk  8/10] RUN dotnet build --configuration Release --no-restore                                                                                                                     1.7s
------
 > [linux/amd64 sdk  8/10] RUN dotnet build --configuration Release --no-restore:
#19 0.414 Microsoft (R) Build Engine version 17.0.0+c9eb9dd64 for .NET
#19 0.414 Copyright (C) Microsoft Corporation. All rights reserved.
#19 0.414
#19 1.321 /usr/share/dotnet/sdk/6.0.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(267,5): error NETSDK1064: Package Microsoft.Extensions.Logging.Abstractions, version 6.0.0 was not found. It might have been deleted since NuGet restore. Otherwise, NuGet restore might have only partially completed, which might have been due to maximum path length restrictions. [/src/Source/ApiTemplate/ApiTemplate.csproj]
#19 1.698
#19 1.698 Build FAILED.
#19 1.698
#19 1.698 /usr/share/dotnet/sdk/6.0.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(267,5): error NETSDK1064: Package Microsoft.Extensions.Logging.Abstractions, version 6.0.0 was not found. It might have been deleted since NuGet restore. Otherwise, NuGet restore might have only partially completed, which might have been due to maximum path length restrictions. [/src/Source/ApiTemplate/ApiTemplate.csproj]
#19 1.699     0 Warning(s)
#19 1.699     1 Error(s)
#19 1.699
#19 1.699 Time Elapsed 00:00:01.21
------
Dockerfile:52
--------------------
  51 |     COPY . .
  52 | >>> RUN dotnet build --configuration Release --no-restore
  53 |     RUN dotnet test --configuration Release --no-build
  54 |     RUN dotnet publish "Source/ApiTemplate/ApiTemplate.csproj" --configuration Release --no-build --output /app
--------------------
error: failed to solve: process "/bin/sh -c dotnet build --configuration Release --no-restore" did not complete successfully: exit code: 1

似乎是dotnet restore失败。这个问题的解决办法是什么?


你错过了--mount=type=cache,id=nuget,target=/root/.nuget/packages在构建命令中

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker Buildkit --mount=type=cache 用于缓存 .NET 6 的 Nuget 包 的相关文章

随机推荐

  • 当JVM执行Java应用程序时,操作系统的作用是什么?为什么我们需要操作系统?

    我在网上读过一些资料 有人说Java应用程序是由java虚拟机 JVM 执行的 执行 这个词让我有点困惑 据我所知 非Java应用程序 即 用C C 编写 可以由操作系统执行 在较低级别 这意味着操作系统将二进制程序加载到内存中 然后指示C
  • Ant 相当于 cut |排序|独特的

    在 Ant 任务中 我设置了一个文件列表属性 例如 web src main test com whatever Ralph business src main test com whatever Alice web src main te
  • 用于可视化类似流程图的 Java 图形库

    我正在制作一个用于绘制流程图 本质上是电路图 的界面 其中包含如下所示的节点 in1 gt gt out1 in2 gt in3 gt gt out2 即每个框都有多个输入边和多个输出边 为了视觉清晰度 如果所有输入边缘都分组在一侧 所有输
  • 使用应用程序包时,<1% 的用户遇到 UnsatisfiedLinkError

    我正在尝试使用新的 Android 应用程序包 我在我的设备上本地运行一些测试 一切正常 然而 一旦部署到生产中 我开始看到一些如下错误 java lang UnsatisfiedLinkError dalvik system PathCl
  • CommandLink 无法在延迟加载的 Primefaces Datascroller 上工作

    我遇到延迟加载问题Primefaces 数据卷轴 http www primefaces org showcase ui data datascroller loader xhtml成分 我有一个 jsf 页面 应该在页面加载时显示 10
  • 修复损坏的编码(使用 Python)

    我有一堆文本文件包含编码错误的韩语字符 具体来说 字符似乎是用 EUC KR 编码的 但文件本身是用 UTF8 BOM 保存的 到目前为止 我成功修复了一个文件 内容如下 使用 EditPlus 打开文件 它显示文件的编码是UTF8 BOM
  • 如何比较 BigDecimals 以使我的测试通过? [复制]

    这个问题在这里已经有答案了 我有以下同样奇怪的情况JUnit test 所以我有这个测试方法 Test public void getNavInfoTest throws ParseException TirAliquotaRamoI ex
  • 使用 HTTP 客户端的 Kerberos 连接

    我正在使用 Kerberos 身份验证编写 HTTP 连接 我有 HTTP 1 1 401 未经授权 您能建议我应该检查什么吗 我认为有一些诡计 但我没有看到 也许我应该将标头 WWW Authenticate 设置为 Negotiate
  • 在netsuite中添加新的事务状态

    我正在开发 netsuite 并希望为客户账单创建新状态 我想要的新状态是 注销 注销后状态显示 已全额付款 我希望它显示 注销 我找到了很多帮助将当前状态更改为另一个现有的默认状态 例如 让我们举个例子 以下是尝试查找待履行销售订单时要应
  • VSCode 自定义宏

    我目前正在尝试使用 VSCode 但我不知道如何正确定义宏并将它们绑定到特定的按键绑定 我习惯使用 Sublime text 并且我定义了一些宏 可以帮助我更快地打字并减少错误 我想要获得的宏如下 alt shift q 哪些类型 并将光标
  • 设置普通石墨烯嵌套查询

    我已经成功创建了一个响应的全石墨烯查询 query person id Mary id name 我现在想扩展它 以便能够循环遍历所有人并为每个人返回类似的数据 query people count allPersons name 我如何获
  • 文件 -----stdarg.h 和 float.h 没有这样的文件或目录吗?

    我正在 xcode 项目中使用 mm 扩展名上的一些文件来编译这些文件 在添加此编译器后 我们在构建设置中添加了 LLVM GCC 4 2 这显示了错误 Developer Platforms iPhoneSimulator platfor
  • 插入等值元素

    我目前正在研究二叉搜索树 我想知道如果您尝试插入与根具有相同值的元素 您会怎么做 它去哪里 BST的定义是它是有序集 因此不允许插入重复项 这通常是由于在 BST 之上构建了更复杂的结构 根据所需的行为 您可能希望在插入重复项时引发异常 错
  • PHP:从网站提取 HTML 数据[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何将自定义日志发送到 Google Play 开发者控制台?

    我已将我的 Android 应用程序上传到谷歌游戏 我的应用程序运行良好 但在某些设备上 它存在一些问题 每当我的应用程序崩溃时 Google Play 开发者控制台都会收到该错误 就像是 java lang RuntimeExceptio
  • 当我在终端中创建新分支时,为什么图表不显示从主分支分支出来的新分支?

    当我在终端中创建一个名为 testing123 的新分支时 为什么 Sourcetree 中的图表不显示从主分支分支出来的新分支 Sourcetree 识别新分支 但它不会从图中的主分支分支出来 为什么会出现这种情况 如何使 Sourcet
  • 如何设置 NSTextView 的默认字体?

    我正在使用禁用 富文本 选项的文本视图来显示一些纯文本 我找不到设置默认字体的方法 如果我在 IB 中输入一些文本 无论如何我都不想要 我可以在 IB 界面中设置字体 但是当用户删除字体并开始键入时 文本会更改为不同的字体和大小 我在这里阅
  • 用 python 替换文件名字符

    我有一些代码将单词 manual 添加到一堆文件名的末尾 我需要更改脚本 以便删除文件名的最后两个字母 ES 然后将其替换为 ES Manual 例如 AC 5400ES txt gt AC 5400 ES manual txt 我如何将该
  • 无法通过 Microsoft Graph API(C# 控制台)发送电子邮件

    我按照这 2 个链接创建了一个控制台应用程序 用于使用 Graph API 发送电子邮件 Microsoft Graph API 无法发送电子邮件 C 控制台 https stackoverflow com questions 574112
  • Docker Buildkit --mount=type=cache 用于缓存 .NET 6 的 Nuget 包

    我写了一个Dockerfile使用 Docker buildx mount type cache设置缓存我的 NuGet 包以加快构建速度 正如所示 这似乎在 NET 5 中有效其他问题 https stackoverflow com qu