首页 > 解决方案 > Dockerfile tar 错误: tar: Cowardly refusing to create an empty archive

问题描述

我正在尝试使用 find 和 tar ubuntu 命令来选择项目中的所有 csproj 文件(以一种优雅的方式),以便我可以在 Docker 文件的一个层中运行 dotnet restore (与构建解决方案不同)。

我在这里阅读了这些解决方案,并试图让它们发挥作用。

https://andrewlock.net/optimising-asp-net-core-apps-in-docker-avoiding-manually-copying-csproj-files-part-2/

但是,使用第一种方法时,我不断收到错误:

tar: Cowardly refusing to create an empty archive
Try 'tar --help' or 'tar --usage' for more information.

我不明白为什么会发生这种情况 - find 命令在 dockerfile 中运行时似乎没有找到任何文件。当我在磁盘上本地运行 find 命令时,它会按预期查找 csproj 文件。看这里:

查找文件

https://github.com/ossentoo/dockerbuildtest/runs/3850694961?check_suite_focus=true

任何人都可以看到问题是什么?也许您可以向我发送拉取请求?

请参阅此处获取我的示例。

https://github.com/ossentoo/dockerbuildtest

谢谢

标签: dockerfilefindtar

解决方案


这显然意味着您的 Docker 映像中没有 *.csproj 文件。问题是RUN命令在您的图像内部运行,而不是在您的主机上,因此您必须首先将 *.csproj 添加到您的图像中。


推荐阅读