Symfony2应用程序在MacOS和Boot2Docker上响应速度慢

我有一个稍大的Symfony应用程序,通过添加Dockerfile中的所有文件在Docker上运行,并运行容器内的所有内容。 我这样做只是为了testing的目的,但现在我想切换到Docker的开发环境,并试图使用-v参数来安装我的本地目录到容器使用像这样的命令:

docker run -v / Users / username / pathtofiles:/ pathtofilesincontainer -i -p 80:80 -t tag sh /pathtofilesincontainer/init.sh

这将/ Users / username / pathtofiles文件夹挂载到/ pathtofilesincontainer,并成功运行init.sh。 init.sh是一个基本的shell脚本,不会对性能或任何事情有任何影响。

我的〜/ .profile文件设置正确,/ etc / hosts文件有一个指向current.local的指向DOCKER_HOST的IP。

当我通过Dockerfile中的ADD命令将所有文件复制到容器中运行应用程序时,它运行完美〜0.5到1秒的响应时间。 当我使用上述命令装载相同的文件时,速度非常慢。 页面呈现在25-35秒左右。

我search了其他的主题,但没有一个真正帮助我。 我试图禁用xdebug,设置php_ini的realcache设置为build议值,运行应用程序/控制台cahce:清除命令,试图连接到本地的MySQL服务器等…没有任何工作。

任何人有任何其他的想法,或者有什么build议? 提前致谢!

我的堆栈是:Symfony2,MySQL,Apache2,Docker 1.3.0,boot2docker 1.3.0,VirtualBox

之前我听说过这种问题,通常把责任放在VirtualBox和Symfony开发环境之间的交互上。 在开发中,每个请求都会重新检查caching,以便快速使用任何更改。 当涉及到文件系统的时候,Virtualbox的速度并不是那么快,而且文件的数量也被检查和更新了,好吧,这太快了。

一个可能值得尝试的技巧是将caching和日志目录设置为共享文件夹之外的path(在/tmp/ ,或者将其放入ram-disk中,但将以下内容放入app / AppKernel.php文件中。

 public function getCacheDir() { if (in_array($this->environment, array('dev'))) { return '/dev/shm/symfonyprojectname/cache/' . $this->environment; } return parent::getCacheDir(); } public function getLogDir() { if (in_array($this->environment, array('dev'))) { return '/dev/shm/symfonyprojectname/logs'; } return parent::getLogDir(); } 

如果你有一个而不是使用VirtualBox来启动boot2docker机器,你可以使用Parallel。