Docker mac symfony 3非常慢

cclgggtu  于 2022-11-16  发布在  Docker
关注(0)|答案(7)|浏览(145)

我开始了一个新的项目与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?我如何调试它?

nwsw7zdq

nwsw7zdq1#

这是一个已知的问题。您的本地文件系统正在Docker for Mac linux VM中使用osxfs挂载,在阅读和写入这些挂载的文件时会有一些额外的延迟。对于小应用程序来说,这并不太明显,但对于一个请求就可以读取数千个文件的较大应用程序来说,这会显著降低速度。

v1uwarro

v1uwarro2#

很抱歉回答晚了,但你可以安装Docker CE Edge,因为它支持缓存模式。

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

区块引号

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

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

bcs8qyzn

bcs8qyzn3#

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

MAC操作系统:

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文件系统下运行。
速度将保持正常。

将停靠计算机Map到本地主机

Docker容器通常在192.168.99.100:9000
正在终端机上执行:
$ vboxmanage modifyvm default --natpf1 "default-map,tcp,,9000,,9000'
您可以从localhost:9000访问

qni6mghb

qni6mghb4#

通过使用Mutagen,Docker for Mac的性能可以达到几乎与Linux的本机共享卷一样快的速度。此处提供了一个基准测试。
我创建了a full example for a Symfony project,它可以用于任何语言的任何类型的项目。

mnowg1ta

mnowg1ta5#

我也遇到过类似的问题。在我的例子中,我在Docker容器中运行Python脚本,速度非常慢。我解决这个问题的方法是使用“旧的”docker-toolbox
虽然不是很理想,但对我很有效

ttisahbt

ttisahbt6#

我有一个详细的解决方案,这个问题在我的答案在这里,docker对OSX慢卷,请检查出来。
我得到了它的地方没有唐斯,也没有额外的软件安装。

hfyxw5xn

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

相关问题