这篇文章是关于我使用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
这对我没有任何帮助..
正如您所看到的,在没有任何代码更改的情况下,每次硬刷新后,由于文件输出损坏,这些是每次出现在同一行的错误:
社区中是否有人知道为什么会这种情况继续发生?
答案 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倍的损坏字节(某些丢失的字节,同一文件中的某些其他字节,有些可能只是二进制损坏的字节)。文件大小保持不变。重复下载相同的文件,并且损坏的字节不同。
wget
似乎得到的文件与原始文件相同。
我使用的php:7.0-apache
图片在任何conf文件中似乎都没有EnableSendFile On / Off设置。
在conf中打开EnableSendFile
可以解决此问题。从samba网络驱动器下载的二进制文件与原始文件完全相同。
我不知道为什么这可以解决问题。希望这些信息对您有所帮助。