我正在使用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的已知问题吗?我该怎么调试呢?
答案 0 :(得分:6)
这是known issue。您的本地文件系统正在使用osxfs安装在Docker for Mac linux VM中,在读取和写入这些已安装的文件时会有一些额外的延迟。对于小型应用程序,这并不太明显,但对于可以在单个请求中读取数千个文件的大型应用程序,它可以显着减慢速度。
答案 1 :(得分:5)
对不起,但你可以安装docker ce edge,因为它支持缓存模式。
块引用
php:
volumes:
- ${SYMFONY_APP_PATH}:/var/www/symfony:cached
用您自己的路径替换$ {SYMFONY_APP_PATH}。
答案 2 :(得分:2)
实际上我使用docker在本地运行项目。为了更快地运行Docker,我使用了以下设置:
Install normaly the dmg file.
Open your terminal and type:
`$ docker-machine create --driver virtualbox default `
`$ docker-machine env default`
`eval "$(docker-machine env default)"`
Now you have the docker-machine up and running, any docker-compose, docker command will run "inside the machine".
In our case "Symfony" is a large application. The docker-machine file system is under osxfs, so the application will be very slow.
安装时:
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文件系统下运行。
速度将是常规的。
常规的docker容器将在192.168.99.100:9000
下运行在终端上运行:
$ vboxmanage modifyvm default --natpf1 "default-map,tcp,,9000,,9000'
您可以从localhost:9000
访问答案 3 :(得分:1)
通过使用Mutagen,可以使Docker for Mac的性能几乎与Linux的本机共享卷一样快。有一个基准测试here。
我创建了a full example for a Symfony project,它可以用于任何语言的任何类型的项目。
答案 4 :(得分:0)
我有类似的问题。在我的情况下,我在docker容器中运行python脚本,它真的很慢。我解决这个问题的方法是使用" old" docker-toolbox。
这不理想,但为我工作
答案 5 :(得分:0)
我在这里的答案docker on OSX slow volumes中详细解决了这个问题,请查看。
我得到的地方没有减速,也没有额外的软件可供安装。
答案 6 :(得分:0)
已知问题
这是已知问题https://forums.docker.com/t/file-access-in-mounted-volumes-extremely-slow-cpu-bound/8076。
如果您有https://www.docker.com/products/docker-toolbox,我不会推荐https://www.docker.com/docker-mac。
Docker for Mac不使用VirtualBox,而是使用HyperKit,a 基于的轻量级macOS虚拟化解决方案 MacOS 10.10 Yosemite及更高版本中的Hypervisor.framework。 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