Partager le dossier de cache
Lorsque vous lancé Composer celui ci va télécharger la liste des packages au format JSON pour les stocker dans un dossier de cache.
Quand vous lancé votre container celui ci est vide, donc vous perdez 30s à chaque fois que vous le lancer.
L'idée ici est d'aller chercher votre dossier de cache local pour le monter sous forme de volume
1) lancer la commande composer global config cache-dir pour voir où se trouve votre dossier de cache
Chez moi, j'ai /home/ines/.cache/composer :
[ines@pcp-iw Drupal]$ composer global config cache-dir Changed current directory to /home/ines/.config/composer /home/ines/.cache/composer
2) Faite également la même chose dans votre container
root@3c78a91b1f8d:/project# composer global config cache-dir Changed current directory to /root/.composer Do not run Composer as root/super user! See https://getcomposer.org/root for details /root/.composer/cache
3) Enfin monter le volume dans vos docker-compose
- ~/.cache/composer/:/root/.composer/cache/
Paralléliser les téléchargements
Une personne sur Twitter (merci Quentin) m'a indiqué un module composer (hirak/prestissimo) qui permet de paralléliser les téléchargements
Dans un container Docker Drupal (ou il y a 244 packages) sans le dossier de cache partagé et sans prestissimo d'installé
composer update met 4m42
Même test avec prestissimo d'installé
composer update met 1m20
Pour le mettre en place il suffit d'installer le package dans votre Dockerfile
RUN composer global require hirak/prestissimo --prefer-dist --no-progress --no-suggest --classmap-authoritative