Astuce pour optimiser Composer dans vos containers Docker

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.

Capture%20d%E2%80%99%C3%A9cran_2018-08-13_14-29-02.png

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 :

  1. [ines@pcp-iw Drupal]$ composer global config cache-dir
  2. Changed current directory to /home/ines/.config/composer
  3. /home/ines/.cache/composer

2) Faite également la même chose dans votre container

  1. root@3c78a91b1f8d:/project# composer global config cache-dir
  2. Changed current directory to /root/.composer
  3. Do not run Composer as root/super user! See https://getcomposer.org/root for details
  4. /root/.composer/cache

3) Enfin monter le volume dans vos docker-compose

  1. - ~/.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

Capture%20d%E2%80%99%C3%A9cran_2018-08-13_15-18-50.png

Même test avec prestissimo d'installé

composer update met 1m20

Capture%20d%E2%80%99%C3%A9cran_2018-08-13_15-22-30.png

 

Pour le mettre en place il suffit d'installer le package dans votre Dockerfile

  1. RUN composer global require hirak/prestissimo --prefer-dist --no-progress --no-suggest --classmap-authoritative
Drupal Docker

Ajouter un commentaire

Image CAPTCHA
Saisir les caractères affichés dans l'image.