Docker mac symfony 3非常慢

时间:2016-07-02 18:49:34

标签: docker symfony docker-compose

我正在使用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 个答案:

答案 0 :(得分:6)

这是known issue。您的本地文件系统正在使用osxfs安装在Docker for Mac linux VM中,在读取和写入这些已安装的文件时会有一些额外的延迟。对于小型应用程序,这并不太明显,但对于可以在单个请求中读取数千个文件的大型应用程序,它可以显着减慢速度。

答案 1 :(得分:5)

对不起,但你可以安装docker ce edge,因为它支持缓存模式。

  • 下载Docker-Edge(等待支持缓存模式的稳定版docker)
  • 将以下行添加到docker-compose.yml文件

块引用

php:
    volumes:
        - ${SYMFONY_APP_PATH}:/var/www/symfony:cached

用您自己的路径替换$ {SYMFONY_APP_PATH}。

答案 2 :(得分:2)

实际上我使用docker在本地运行项目。为了更快地运行Docker,我使用了以下设置:

MAC OSX:

Docker Toolbox

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.

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文件系统下运行。

速度将是常规的。

将docker-machine映射到localhost

常规的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