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

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

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

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

提前致谢

编辑:
Dockerfile 客户端

回答

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


回答

Visual Studio 的做法有点奇怪。

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

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

我的演示项目的设置是

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

所以我希望

cd Workerservice2WorkerService2
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文件的父目录并使用-fdocker 选项指定要在子文件夹中使用的 Dockerfile:

cd Workerservice2
docker build -f WorkerService2Dockerfile --force-rm -t worker2/try7 .

docker run -it worker2/try7    

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

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

  • 嘎。正是最后一个点吸引了我。我尝试了完整文件或没有文件的路径的各种组合,但我要么遇到了“找不到文件”的问题,要么出现了可怕的“docker build requires just 1 argument”消息。不会撒谎,在 docker 中学习最微小的新东西就像拔牙,FFS。一旦你弄清楚了晦涩的语法和方法,它就会很好用,但在那之前它是一个接一个的工作台。

回答

请求不存在的目录会引发此错误。

就我而言,我试过

 > [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 构建上下文的子文件夹。


以上是docker-无法计算缓存键:未找到-在VisualStudio中运行良好的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>