Docker et Symfony sur MacOs, optimisons tout cela

Comme base pour mes projets Symfony, j’utilise le multicontainer Docker créé par Maxpou et partagé sur Github (merci à lui).

Cependant, ça rame sévère sur MacOs. Le rendu d’une simple page me prends entre 4 et 6 secondes. Autant vous dire que c’est loin d’être ce qu’il me faut !

Voici 2 étapes permettant d’avoir une vitesse de rendu normal en dev.

Note : J’utilise ici Symfony 3.3+

1/ Sortir le dossier /vendor

La première chose à faire est de sortir le dossier vendor/ de notre container.

Pour cela, il vous faut modifier votre fichier composer.json en ajoutant :

composer.json

Il vous faut ensuite modifier l’appel à votre fichier autoload.php. Vous devez donc modifier cela dans les fichiers : bin/console, web/app_dev.php et web/app.php :

// ...
require '/app-vendor/autoload.php';
// ...

Vous pouvez désormais lancer votre composer install qui installera les différentes dépendances de votre projet.

Bien sûr, il vous faut aussi ajouter le volume /app-vendor dans votre fichier docker-compose.yml

...
php:
build:
context: php7-fpm
args:
TIMEZONE: ${TIMEZONE}
volumes:
- ${SYMFONY_APP_PATH}:/var/www/symfony
- ./logs/symfony:/var/www/symfony/logs
- /app-vendor
...

2/ Sortir les dossiers /cache et /logs

Ici, c’est la même idée. On va sortir les dossiers de cache et de log du container.

Il vous faut updater le fichier app/AppKernel.php :

Une fois ceci fait, il faut ajouter les volumes à votre docker-compose.yml.

...
php:
build:
context: php7-fpm
args:
TIMEZONE: ${TIMEZONE}
volumes:
- ${SYMFONY_APP_PATH}:/var/www/symfony
- ./logs/symfony:/var/www/symfony/logs
- /app-vendor
- /app-cache
- /app-logs
...

Si vous relancez votre application, vous devriez avoir un temps de réponse décent.

Un environnement de dev décent :)

N’hésitez à pas à commenter si vous avez des soucis ou d’autres solutions.

Bon dev !