适用于Windows的Docker:损坏的文件

时间:2017-07-13 10:59:02

标签: windows docker webpack

这篇文章是关于我使用webpack和Vue.js以及Docker for Windows的稳定版本的问题。

似乎大型编译文件(超过1 Mb)在从虚拟机发送时被拆分为块,结果发现它们最终有90%的时间被破坏(部分其他文件似乎被注入在文件块之间。)

我遇到了Windows和MacOS上发生的一些报告错误,似乎通过将Dock配置中的Apache配置更改为sendfile Off AND/OR MMAP Off来解决这些类似的问题:

RUN sed -i -e 's/EnableSendfile On\/EnableSendfile Off/g' /etc/apache2/httpd.conf

RUN sed -i -e 's/EnableMMAP On\/EnableMMAP Off/g' /etc/apache2/httpd.conf

这对我没有任何帮助..

正如您所看到的,在没有任何代码更改的情况下,每次硬刷新后,由于文件输出损坏,这些是每次出现在同一行的错误:

Various outputs based on corruptied chunks

社区中是否有人知道为什么会这种情况继续发生?

2 个答案:

答案 0 :(得分:2)

在某些docker配置中,您只需要取消注释与MMAP相关的行(默认情况下,SendFile为Off)。

 sed -i 's|#EnableMMAP off|EnableMMAP off|' /etc/apache2/httpd.conf \

此外,您还可以在apache容器中查看您的httpd.conf,以确保您需要将此MMAP选项添加/取消注释为关闭

答案 1 :(得分:0)

我也遇到了类似的问题,即从映射到其Linux主机上安装的文件夹的卷中下载Docker容器中的静态文件。即在Linux主机上安装的samba网络驱动器,在Linux主机内运行的docker容器,通过-v参数传递到该容器的文件夹。

(使用wget从其他计算机或浏览器下载文本日志文件)可能会出现1.5MB左右的错误,其中包含大约20倍的损坏字节(某些丢失的字节,同一文件中的某些其他字节,有些可能只是二进制损坏的字节)。文件大小保持不变。重复下载相同的文件,并且损坏的字节不同。

linux主机上的

wget似乎得到的文件与原始文件相同。

我使用的php:7.0-apache图片在任何conf文件中似乎都没有EnableSendFile On / Off设置。 在conf中打开EnableSendFile可以解决此问题。从samba网络驱动器下载的二进制文件与原始文件完全相同。

我不知道为什么这可以解决问题。希望这些信息对您有所帮助。