从Docker中检测Virtualbox
我的使用Docker的应用程序应该在Ubuntu中直接和Windows + VirtualBox(没有Vagrant)略有不同。
是否有可能检测到我是否在
Ubuntu > Docker > Ubuntu
或in
Windows > VirtualBox > Ubuntu > Docker > Ubuntu
?
为什么我需要这个?
我有PHP的Symfony应用程序和开发环境是非常缓慢的Windows(每个请求需要超过5秒),因为VirtualBox共享文件夹。 我将var/cache
和var/logs
移出到/dev/shm/appname/
,一切都变得更快了。 但是使用Ubuntu的开发者并不需要这个function – 即使没有这个黑客攻击,它也能正常工作。
我的想法
每个开发人员都可以拥有自己docker-compose.yml
并设置环境variables,但是现在我们在大多数情况下共享相同docker-compose.yml
。
可能是一个延伸,但在Symfony应用程序内核中configurationpath时:
- 从PHP调用
df /some/application/file.php
并捕获文件的挂载点(最后一列)。 - 从PHP
mount | grep "$mount point" | grep "vboxsf" |wc -l
mount | grep "$mount point" | grep "vboxsf" |wc -l
mount | grep "$mount point" | grep "vboxsf" |wc -l
。 如果结果是> 0,那么你正在使用VirtualBox共享文件夹。