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

时间:2018-01-30 20:14:08

标签: docker visual-studio-2017

当我尝试从任何.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格式后才开始使用它。

2 个答案:

答案 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桌面。

这解决了问题。