Symfony2 app slow response on MacOS & Boot2Docker

I have a slightly big Symfony app, which I was running on Docker by adding all of the files in the Dockerfile, and run everything from within the container. I was doing this only for testing purposes, but now I wanted to switch the dev environment to Docker as well, and tried using -v parameter to mount my local directory into the container using a command like this:

docker run -v /Users/username/pathtofiles:/pathtofilesincontainer -i -p 80:80 -t tag sh /pathtofilesincontainer/init.sh

  • Starting Jenkins in Docker Container
  • Docker Build Error
  • Run a Docker image as a command line utility in Windows?
  • Docker will not attach to an image
  • Unable to run flask app in debug mode using Docker
  • Accessing a MariaDB in one Docker from another Docker
  • This mounts the /Users/username/pathtofiles folder to /pathtofilesincontainer, and runs the init.sh successfully. init.sh is a basic shell script which doesn’t have any impact on performance or anything.

    My ~/.profile file is set correctly and /etc/hosts file has a directive to point current.local to DOCKER_HOST ip.

    When I run the app by copying all of the files into the container via the ADD command in Dockerfile, it runs perfect ~0.5 to 1 sec response time. When I use the above command to mount the same files, it is extremely slow. Page is rendered around 25-35 seconds.

    I’ve searched other topics under SO, but none of them really helped me. I tried disabling xdebug, setting php_ini realcache settings to suggested values, running app/console cahce:clear command, trying to connect to a local mysql server, etc… Nothing worked.

    Anyone have any other ideas, or any suggestions? Thanks in advance!

    My stack is: Symfony2, MySQL, Apache2, Docker 1.3.0, boot2docker 1.3.0, VirtualBox

  • How do you manipulate tags in docker registry 2.0 and the v2 API?
  • COPY of existing file in Dockerfile fails mysteriously
  • file system issue when i use vagrant+docker on windows
  • docker-compose - networks - /etc/hosts is not updated
  • Docker - overlay network on rhel 7
  • Can't ping Docker containers via hostnames/names
  • 2 Solutions collect form web for “Symfony2 app slow response on MacOS & Boot2Docker”

    I’ve heard of this sort of problem before, and the blame is usually put on the interactions between VirtualBox and the Symfony dev environment. In dev, the cache is rechecked every request, so that any changes are quickly used. Virtualbox isn’t so fast when it comes to the filesystem though, and the number of files checked and updated, well, it’s just too much to be quick as well.

    One trick that may well be worth trying, is to set the cache and logs directory to a path outside the shared folders – under /tmp/, or into a ram-disk, but putting the following into the app/AppKernel.php file.

    public function getCacheDir()
    {
        if (in_array($this->environment, array('dev'))) {
            return '/dev/shm/symfonyprojectname/cache/' . $this->environment;
        }
        return parent::getCacheDir();
    }
    
    public function getLogDir()
    { 
        if (in_array($this->environment, array('dev'))) {
            return '/dev/shm/symfonyprojectname/logs';
        }
        return parent::getLogDir();
    }
    

    You can use Parallel if you have one instead of using VirtualBox to boot boot2docker machine.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.