当我尝试从任何.NET核心项目构建Docker镜像时,如果项目的解决方案文件在Visual Studio 2017中打开,则Docker构建过程在尝试创建构建上下文时会立即失败:
ERROR: Error processing tar file(exit status 1): unexpected EOF
如果我关闭解决方案,Docker构建成功。我假设VS 2017在某种程度上存在文件锁定,这会干扰Docker创建构建上下文。我可以添加到.dockerignore
文件中以允许在解决方案文件打开时运行映像构建吗?
我以前没有遇到project.json
风格解决方案的问题 - 我在2017年将这些解决方案升级为新的.csproj
格式后才开始使用它。
答案 0 :(得分:1)
经过一些试验,我注意到这与我的“ SQL Server”数据库项目(.csproj)相关联。
Visual Studio倾向于锁定某些文件,这些文件会导致docker构建过程出现问题,可以通过关闭Visual Studio,然后使用powershell并为dockerfile手动运行docker build命令来确认这一点。
在开始执行dockerfile之前,似乎还会添加一个额外的过程,首先将所有项目文件复制到缓存中,无论您是否需要这些文件,甚至是否有意指定要复制的文件直接在您的dockerfile脚本中。
您的解决方案目录(在Visual Studio文件浏览器中未显示)应该已经自动创建了.dockerignore文件,Visual Studio锁定的任何文件都可以安全地添加到该文件中,例如,我在下面添加了以下两行:让构建再次正常工作;
** / *。dbmdl
** / *。jfm
乍一看,由此而列出的错误消息不容易理解,它列出了解决方案中的所有文件都存在问题,而实际上遇到的第一个问题却导致大量错误。
还值得注意的是,某些病毒检查程序也可能导致类似的错误,因此您需要在这些程序中创建例外规则。
答案 1 :(得分:0)
这篇文章帮助我解决了这个错误: 错误msg =“无法将文件\\?\ C:\ APP \ wea添加到tar:归档文件/ tar:缺少写入32个字节。
由于引入了9 + gigs大文件夹,我的docker构建过程也被挂起了-必须从dockerfile中删除此“副本”。
下一步:我必须关闭Visual Studio并重新启动Docker桌面。
这解决了问题。