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 :
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.
N’hésitez à pas à commenter si vous avez des soucis ou d’autres solutions.
Bon dev !