我在Mac OS X Docker version 1.10.1
上使用El Captain
。我创建了一个带有CentOS 6发行版的Docker,只安装了PHP和Apache。我使用这个docker来开发我的PHP代码。
当我启动Docker时,我使用参数“-v”来共享目录。它工作得很好。 Apache和PHP就像一个魅力。
但是..正如我所说,我使用这个docker来开发一些代码......所以文件总是在变化。出于某些奇怪的原因,Apache有时无法识别它。
例如......假设我使用一些IDE编辑文件“index.html”,保存更改并确认查看docker内部。但Apache没有认识到这种变化(即使我重新启动了apache或docker!)...但是,如果我进入docker并打开并只用“vi”保存文件,那么apache会识别之前所做的更改。
我检查了docker和mac os之间的日期,它就差不多了。
我认为这会是Apache中的缓存问题,但我在虚拟主机中添加了以下规则但没有成功:
<filesMatch "\.(html|htm|js|css)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>
</filesMatch>
如何解决这个问题?以前有人遇到这个问题吗?
答案 0 :(得分:2)
OS X上的Docker使用VirtualBox,而VirtualBox与sendfile不兼容。您可以在apache config中停用sendfile:
EnableSendfile Off