在docker和Mac OS X之间共享文件时Apache的问题

时间:2016-03-13 16:09:28

标签: apache docker

我在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>

如何解决这个问题?以前有人遇到这个问题吗?

1 个答案:

答案 0 :(得分:2)

OS X上的Docker使用VirtualBox,而VirtualBox与sendfile不兼容。您可以在apache config中停用sendfile:

EnableSendfile Off