9

I have the below project structure

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

And I have one directory in bin directory that name is app.publish.

And my Dockerfile is like below:

#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 .

After I run below command to build image from this docker file

docker build -t soroshsabz/testcoreservice .

I got the below error

[+] 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

My question is why I got this error? and how to resolve it?

I use Docker Engine Community 20.10.6 on Windows 10 20H2 19042.964

I see Docker - failed to compute cache key: not found - runs fine in Visual Studio and some internal links, but does not find any useful things.

I am binging my problem and find some same problem like Dockerfile can’t copy specified local directory & file or Windows Docker Dockerfile COPY file inside folder.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
sorosh_sabz
  • 2,356
  • 2
  • 32
  • 53

3 Answers3

15

Thanks to BMitch, I found my problem. The problem is the dockerignore file contains some pattern that must not match with COPY files name.

My problem is the patterns inside the .dockerignore file is matched wrongly with bin/app.publish. To resolve my problem I just change the pattern in dockerignore.

Specifically, remove the line **/bin for .dockerignore.

Ambrose Leung
  • 3,704
  • 2
  • 25
  • 36
sorosh_sabz
  • 2,356
  • 2
  • 32
  • 53
  • 4
    Next time, I suggest you tell the person who gave you the solution to post it as an answer and accept that instead of posting your own. :) – Kalle Jun 10 '21 at 03:12
2

In my case, I was trying to copy a symlinked directory, created by npm install of a local package. The symlink pointed to a directory outside the docker context. I solved the problem by replacing the symlink with a deep copy of the npm package directory, and then docker build worked fine.

Joshua Richardson
  • 1,827
  • 22
  • 22
0

This might be of some help to others:

I am building a .NET Core application with a dockerfile and had been doing some renaming. I got the "failed to compute cache key" error, because the filenames in the dockerfile no longer matched the new names I had given to the targeted files.

Once I fixed the naming in the dockerfile, everything worded as expected.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131