我开始了一个新的项目与Symfony 3,我想使用Docker的开发环境。我们将在这个项目与十几个开发人员,所以我想有一个简单的安装过程。
这是我的docker-compose.yml
version: '2'
services:
db:
image: mysql
ports:
- "3307:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mydb
MYSQL_USER: root
MYSQL_PASSWORD: root
php:
build: ./php-fpm
expose:
- "9001"
volumes:
- .:/var/www/project
- ./var/logs:/var/www/project/app/logs
links:
- db
nginx:
build: ./nginx
ports:
- "8001:80"
links:
- php
volumes_from:
- php
volumes:
- ./var/logs/nginx/:/var/log/nginx
我安装了最近的Docker for Mac应用程序(测试版)。最大的问题是我的symfony应用程序非常非常慢(一个简单的页面需要超过5秒)。同样的应用程序与MAMP快得多(500毫秒最大)。这是一个已知的问题Docker?我如何调试它?
7条答案
按热度按时间nwsw7zdq1#
这是一个已知的问题。您的本地文件系统正在Docker for Mac linux VM中使用osxfs挂载,在阅读和写入这些挂载的文件时会有一些额外的延迟。对于小应用程序来说,这并不太明显,但对于一个请求就可以读取数千个文件的较大应用程序来说,这会显著降低速度。
v1uwarro2#
很抱歉回答晚了,但你可以安装Docker CE Edge,因为它支持缓存模式。
docker-compose.yml
文件中区块引号
用您自己的路径替换
${SYMFONY_APP_PATH}
。bcs8qyzn3#
实际上,我使用Docker在本地运行项目。为了更快地运行Docker,我使用了以下设置:
MAC操作系统:
Docker Toolbox(第一个字母)
docker-machine-nfs(第一个字母)
安装方式:
curl -s https://raw.githubusercontent.com/adlogix/docker-machine-nfs/master/docker-machine-nfs.sh | sudo tee /usr/local/bin/docker-machine-nfs > /dev/null && \ sudo chmod +x /usr/local/bin/docker-machine-nfs
正在运行
必须键入root密码
$ docker-machine-nfs default
现在您的docker-machine正在nfs文件系统下运行。
速度将保持正常。
将停靠计算机Map到本地主机
Docker容器通常在192.168.99.100:9000
正在终端机上执行:
$ vboxmanage modifyvm default --natpf1 "default-map,tcp,,9000,,9000'
您可以从localhost:9000访问
qni6mghb4#
通过使用Mutagen,Docker for Mac的性能可以达到几乎与Linux的本机共享卷一样快的速度。此处提供了一个基准测试。
我创建了a full example for a Symfony project,它可以用于任何语言的任何类型的项目。
mnowg1ta5#
我也遇到过类似的问题。在我的例子中,我在Docker容器中运行Python脚本,速度非常慢。我解决这个问题的方法是使用“旧的”docker-toolbox。
虽然不是很理想,但对我很有效
ttisahbt6#
我有一个详细的解决方案,这个问题在我的答案在这里,docker对OSX慢卷,请检查出来。
我得到了它的地方没有唐斯,也没有额外的软件安装。
hfyxw5xn7#
已知问题
这是已知问题https://forums.docker.com/t/file-access-in-mounted-volumes-extremely-slow-cpu-bound/8076。
如果您有https://www.docker.com/docker-mac,我不会推荐https://www.docker.com/products/docker-toolbox。
Docker for Mac不使用VirtualBox,而是使用HyperKit,这是一个轻量级的macOS虚拟化解决方案,构建在macOS 10.10约塞米蒂及更高版本的Hypervisor.框架之上。https://docs.docker.com/docker-for-mac/docker-toolbox/#the-docker-for-mac-environment
我的解决方法
我已经创建了变通方案,这可能会帮助你。我使用http://docker-sync.io/为我的symfony项目。之前使用docker-sync页面加载30秒,现在它低于1秒-https://github.com/Arkowsky/docker_symfony