Today I was working on a php development environment using docker on MacOSX (you might run into the same problems on windows, too!). The osxfs in Docker for Mac is painfully slow and the company behind docker is actually aware of that. At #77 they track the issue at docker-for-mac right now. At the time of writing the ticket is still open.
If you happen to use symfony as PHP framework or in particular composer as package manager for php projects, you end up
with a very big directory called
In symfony standard edition I am counting 10259 files and folders.
For this blog post I put a vanilla symfony 3.2.7 project at DracoBlue/symfony-composer-docker-performance-test.
With this commit
I added a
docker-compose.yml and a
nginx.conf to run
If you run a quick benchmark against app_dev.php:
$ ab -n 1000 -c 16 http://dev.localtest.me:8080/ Concurrency Level: 16 Time taken for tests: 319.303 seconds Complete requests: 1000 Failed requests: 0 Requests per second: 3.13 [#/sec] (mean) Time per request: 5108.845 [ms] (mean) Time per request: 319.303 [ms] (mean, across all concurrent requests) Transfer rate: 131.33 [Kbytes/sec] received
you end up with response times for a vanilla symfony project of round about 319ms.
$ ab -n 1000 -c 16 http://app.localtest.me:8080/ Concurrency Level: 16 Time taken for tests: 86.140 seconds Complete requests: 1000 Failed requests: 0 Requests per second: 11.61 [#/sec] (mean) Time per request: 1378.234 [ms] (mean) Time per request: 86.140 [ms] (mean, across all concurrent requests) Transfer rate: 54.50 [Kbytes/sec] received
looks better (86ms), but is not very convenient for development.
Let's tune this with a simple trick down to 46ms (-85%) for app_dev.php and down to 9ms (-88%) for app.php.