在使用 Visual Studio 2017 打开解决方案时,Docker 镜像无法构建

3
当我尝试从我的任何.NET Core项目构建Docker映像时,如果该项目的解决方案文件在Visual Studio 2017中打开,Docker构建过程在尝试创建构建上下文时立即失败:
ERROR: Error processing tar file(exit status 1): unexpected EOF
如果我关闭解决方案,Docker构建将成功。我认为这里是由于VS 2017正在执行某种文件锁定,正在干扰Docker创建构建上下文。是否可以将某些内容添加到.dockerignore文件中以允许在打开解决方案文件的情况下运行图像构建?
在使用project.json格式的解决方案时我之前没有遇到这个问题-只有在我在2017年升级这些解决方案到新的.csproj格式之后才出现了这个问题。

你好,你解决了这个问题吗?我遇到了类似的情况,不确定原因。其他话题建议检查病毒检测器,但我认为这对我来说不是问题所在。最初它可以工作,但现在不行了。这是一个奇怪的问题。 - Phill
2个回答

4
经过一些尝试,我发现这与我的“SQL Server”数据库项目(.csproj)有关。
Visual Studio倾向于锁定某些文件,这会导致Docker构建过程出现问题。可以通过关闭Visual Studio,然后使用PowerShell手动运行dockerfile的构建命令来确认这一点。
在开始执行dockerfile之前,还似乎需要添加一个额外的进程,将所有项目文件先复制到缓存中,而不管您是否需要这些文件,甚至是否在dockerfile脚本中明确指定要直接复制这些文件。
您的解决方案目录(未在Visual Studio文件浏览器中显示)应该已经自动创建了.dockerignore文件。Visual Studio锁定的任何文件都可以安全地添加到该文件中。例如,我添加了以下两行以使构建再次正常工作:
**/*.dbmdl
**/*.jfm
乍一看,由此产生的错误消息不易解释,它列出了解决方案中所有文件都存在问题,但实际上遇到的第一个问题就会引发一连串的错误。
值得注意的是,某些病毒检查器也可能会导致类似的错误,您需要在这些程序中创建例外规则。

0

这篇文章帮助我解决了以下错误: error msg="Can't add file \\?\C:\APP\wea. to tar: archive/tar: missed writing 32 bytes.

我的Docker构建过程也因引入一个大文件夹(9+G)而挂起——必须从Dockerfile中删除此“复制”操作。

接下来,我不得不关闭Visual Studio并重新启动Docker Desktop。

这解决了问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接