docker - 无法计算缓存键:未找到 - 在 Visual Studio 中运行良好

时间:2021-02-10 22:32:45

标签: windows visual-studio docker command-line-interface windows-subsystem-for-linux

所以我用 VS 生成了一个 Dockerfile,它在 VS 中运行得很好,现在我正在尝试从 Windows 本身构建它(docker buid . ,我尝试了很多组合)。但是我收到以下错误

Error code

当我将 copy 更改为 ./client.csproj 时,它确实会继续,然后我得到 Second error with changed copy path

我做错了什么?我把Docker linux改成了windows,改了WSL,重启了一切

提前致谢

编辑: Dockerfile client

5 个答案:

答案 0 :(得分:5)

检查您的 .dockerignore 文件。可能它忽略了复制命令所需的文件,并且您无法计算缓存密钥错误。

答案 1 :(得分:5)

Visual Studio 的做法有点奇怪。

它不是在带有 Dockerfile 的文件夹中启动 docker build,而是在父文件夹中启动并使用 -f 选项指定 Dockerfile。

我正在使用演示项目(试图为另一个问题创建一个最小的解决方案)并遇到了同样的情况。

我的演示项目的设置是

\WorkerService2  ("solution" folder)
   +- WorkerService2.sln
   +- WorkserService2  ("project" folder)
       +- DockerFile
       +- WorkerService2.csproj
       +- ... other program files

所以我期待

cd \Workerservice2\WorkerService2
docker build .

但是我收到了你的错误信息。

 => ERROR [build 3/7] COPY [WorkerService2/WorkerService2.csproj, WorkerService2/]                                                                                                                        0.0s
------
 > [build 3/7] COPY [WorkerService2/WorkerService2.csproj, WorkerService2/]:
------
failed to compute cache key: "/WorkerService2/WorkerService2.csproj" not found: not found

改为使用 .sln 文件转到父目录并使用 docker -f 选项指定要在子文件夹中使用的 Dockerfile:

cd \Workerservice2
docker build -f WorkerService2\Dockerfile --force-rm -t worker2/try7 .

docker run -it worker2/try7    

注意docker命令的最后一部分,通常是Dockerfile所在的文件夹,是local directlry,指定Dockerfile。

我通过检查构建过程的输出进入了这个阶段,详细程度设置为详细。 如果您选择工具/选项/项目和解决方案/构建和运行,您可以调整构建输出的详细程度,我做了详细说明。

答案 2 :(得分:4)

请求一个不存在的目录会抛出这个错误。

就我而言,我尝试过

 > [stage-1  7/14] COPY /.ssh/id_rsa.pub /.ssh/:
------
failed to compute cache key: "/.ssh/id_rsa.pub" not found: not found

我忘记将 /.ssh 文件夹添加到项目目录中。在您的情况下,您应该检查 /client 是否真的是 Dockerfile 构建上下文的子文件夹。

答案 3 :(得分:1)

就我而言,我发现 docker build 在目录名称中区分大小写,因此我在 COPY 指令中写入 /bin/release/net5.0/publish 并因相同的错误而失败,我刚刚更改为 / bin/Release/net5.0/publish 成功了

答案 4 :(得分:0)

我遇到了同样的问题,我在添加 Docker 支持时将 docker 环境设置为 Windows。即使在 VS 中运行也会出错。我将环境更改为 Linux,因为我的 docker 在 Windows 的 Linux 子系统中运行。

然后我回到终端运行命令。

我能够通过移动到解决方案文件夹(根文件夹)来解决这个问题。

我做了这样的 docker build:

docker build -t containername/tag -f ProjectFolder/Dockerfile .

然后我做了 docker run

docker run containername/tag