Docker 生成无法计算缓存密钥

Docker build failed to compute cache key

提问人:sorosh_sabz 提问时间:5/5/2021 最后编辑:Peter Mortensensorosh_sabz 更新时间:10/5/2023 访问量:18912

问:

我有下面的项目结构

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         4/22/2021   1:49 PM                App_Start
d-----         3/20/2020   3:35 PM                Areas
d-----          5/4/2021   7:01 PM                bin
d-----         3/20/2020   3:35 PM                Content
d-----          5/4/2021   5:59 PM                Controllers
d-----         3/20/2020   3:35 PM                fonts
d-----         8/20/2020   9:43 PM                obj
d-----          7/9/2020   8:43 PM                Properties
d-----         3/20/2020   3:35 PM                Scripts
d-----         3/20/2020   3:35 PM                Views
-a----          5/4/2021   6:00 PM             46 .dockerignore
-a----          5/4/2021   6:00 PM          45239 foo.csproj
-a----          5/4/2021  11:21 PM           1621 foo.csproj.user
-a----         4/22/2021   1:49 PM            390 ConnectionStrings.config
-a----          5/5/2021  12:17 AM            375 Dockerfile
-a----         3/20/2020   3:35 PM            116 Global.asax
-a----         3/20/2020   3:35 PM            717 Global.asax.cs
-a----         8/13/2020   1:05 PM           1770 NLog.config
-a----         3/20/2020   3:35 PM         159853 NLog.xsd
-a----          5/4/2021   6:00 PM           9217 packages.config
-a----         3/20/2020   3:35 PM          12294 UnityConfiguration30.xsd
-a----          5/4/2021   6:00 PM          29650 Web.config
-a----         3/20/2020   3:35 PM           1308 Web.Debug.config
-a----         3/20/2020   3:35 PM            705 Web.Release.config

我有一个以该名称命名的目录是 .bin directoryapp.publish

我的 Dockerfile 如下所示:

#Depending on the operating system of the host machines(s) that will build or run the containers, the image specified in the FROM statement may need to be changed.
#For more information, please see https://aka.ms/containercompat

FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
ARG source
WORKDIR /inetpub/wwwroot
COPY bin/app.publish .

在我运行以下命令从此 docker 文件构建映像后

docker build -t soroshsabz/testcoreservice .

我收到以下错误

[+] Building 15.1s (7/7) FINISHED
 => [internal] load build definition from Dockerfile                                                               0.1s
 => => transferring dockerfile: 414B                                                                               0.0s
 => [internal] load .dockerignore                                                                                  0.1s
 => => transferring context: 34B                                                                                   0.0s
 => [internal] load metadata for mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019         14.9s
 => [1/3] FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019@sha256:e1475e80eb3cbdfd81  0.1s
 => => resolve mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019@sha256:e1475e80eb3cbdfd81  0.1s
 => [internal] load build context                                                                                  0.1s
 => => transferring context: 2B                                                                                    0.0s
 => CACHED [2/3] WORKDIR /inetpub/wwwroot                                                                          0.0s
 => ERROR [3/3] COPY bin/app.publish .                                                                             0.0s
------
 > [3/3] COPY bin/app.publish .:
------
failed to compute cache key: "/bin/app.publish" not found: not found

我的问题是为什么我收到这个错误?以及如何解决它?

我用Docker Engine Community 20.10.6Windows 10 20H2 19042.964

我看到 Docker - 无法计算缓存键:未找到 - 在 Visual Studio一些内部链接中运行良好,但没有找到任何有用的东西。

我正在解决我的问题,并发现一些相同的问题,例如Dockerfile无法复制指定的本地目录和文件文件夹中的Windows Docker Dockerfile COPY文件

docker windows-10 dockerfile visual-studio-2019 docker-buildkit

评论

12赞 BMitch 5/5/2021
文件中有什么?.dockerignore
0赞 sorosh_sabz 5/5/2021
@BMitch你说得对,我的问题来自dockerignore,非常感谢,我解决了。

答:

17赞 sorosh_sabz 5/5/2021 #1

多亏了 BMitch,我找到了我的问题。问题是 dockerignore 文件包含一些不能与文件名不匹配的模式。COPY

我的问题是文件中的模式与.为了解决我的问题,我只是更改了dockerignore中的模式。.dockerignorebin/app.publish

具体而言,删除 的行。**/bin.dockerignore

评论

5赞 Kalle 6/10/2021
下次,我建议你告诉给你解决方案的人,把它作为答案发布,并接受它,而不是发布你自己的答案。:)
0赞 J...A... 9/18/2021 #2

这可能对其他人有所帮助:

我正在使用 dockerfile 构建一个 .NET Core 应用程序,并且一直在进行一些重命名。我收到“无法计算缓存密钥”错误,因为 dockerfile 中的文件名不再与我为目标文件提供的新名称匹配。

一旦我修复了 dockerfile 中的命名,一切都按预期进行。

2赞 Joshua Richardson 7/30/2022 #3

就我而言,我试图复制一个由本地包的 npm install 创建的符号链接目录。符号链接指向 docker 上下文之外的目录。我通过用 npm 包目录的深层副本替换符号链接来解决这个问题,然后 docker build 工作正常。

0赞 Felipe Augusto 10/5/2023 #4

对我来说,问题出在docker命令中的上下文路径