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