« Symfony Docker » : différence entre les versions

Ligne 669 : Ligne 669 :


----
----
=== composer:latest (optionnel) ===
=----
=== '''composer:latest (optionnel)''' ===


Ce service Composer optionnel pour vous donner une '''alternative plus propre et isolée''' pour exécuter les commandes Composer, plutôt que de les exécuter directement dans le container PHP-FPM. Voici les raisons détaillées :
Ce service Composer optionnel pour vous donner une '''alternative plus propre et isolée''' pour exécuter les commandes Composer, plutôt que de les exécuter directement dans le container PHP-FPM. Voici les raisons détaillées :
Ligne 676 : Ligne 677 :
-----
-----


=== 1. '''Séparation des responsabilités''' ===
==== 1. '''Séparation des responsabilités''' ====


* '''Problème sans ce service''' :<br />
* '''Problème sans ce service''' :<br />
Ligne 688 : Ligne 689 :
-----
-----


=== 2. '''Avantages concrets''' ===
==== 2. '''Avantages concrets''' ====


==== a) '''Gestion propre des permissions''' ====
===== a) '''Gestion propre des permissions''' =====


* Les fichiers générés par Composer (vendor/, composer.lock) auront les '''mêmes permissions''' que votre utilisateur local (car le container Composer hérite des permissions du volume monté).
* Les fichiers générés par Composer (vendor/, composer.lock) auront les '''mêmes permissions''' que votre utilisateur local (car le container Composer hérite des permissions du volume monté).
* Évite les problèmes classiques de permissions quand on utilise <code>composer install</code> dans le container PHP.
* Évite les problèmes classiques de permissions quand on utilise <code>composer install</code> dans le container PHP.


==== b) '''Isolation des dépendances''' ====
===== b) '''Isolation des dépendances''' =====


* Le container PHP n’a pas besoin d’avoir Composer installé en permanence (même si mon Dockerfile l’inclut pour la flexibilité).
* Le container PHP n’a pas besoin d’avoir Composer installé en permanence (même si mon Dockerfile l’inclut pour la flexibilité).
* Réduction de l’image finale en production (vous pouvez créer une image sans Composer).
* Réduction de l’image finale en production (vous pouvez créer une image sans Composer).


==== c) '''Compatibilité avec les bundles locaux''' ====
===== c) '''Compatibilité avec les bundles locaux''' =====


* Comme vous utilisez des bundles locaux (via <code>&quot;type&quot;: &quot;path&quot;</code>), le service Composer monte à la fois <code>./app</code> et <code>./Bundles</code>, garantissant que les symlinks fonctionnent correctement.
* Comme vous utilisez des bundles locaux (via <code>&quot;type&quot;: &quot;path&quot;</code>), le service Composer monte à la fois <code>./app</code> et <code>./Bundles</code>, garantissant que les symlinks fonctionnent correctement.
Ligne 707 : Ligne 708 :
-----
-----


=== 3. '''Comment l’utiliser ?''' ===
==== 3. '''Comment l’utiliser ?''' ====


Exemples d’utilisation :
Exemples d’utilisation :
Ligne 725 : Ligne 726 :
-----
-----


=== 4. '''Alternative : Composer dans le container PHP''' ===
==== 4. '''Alternative : Composer dans le container PHP''' ====


Si vous préférez ne pas utiliser ce service optionnel, vous pouvez : 1. Utiliser le Composer inclus dans le container PHP :<br />
Si vous préférez ne pas utiliser ce service optionnel, vous pouvez : 1. Utiliser le Composer inclus dans le container PHP :<br />
Ligne 733 : Ligne 734 :
-----
-----


=== 5. '''Pourquoi “optionnel” ?''' ===
==== 5. '''Pourquoi “optionnel” ?''' ====


* Beaucoup de développeurs préfèrent exécuter Composer '''en dehors de Docker''' (sur leur machine host) pour des raisons de performance (cache Composer partagé, pas de overhead Docker).
* Beaucoup de développeurs préfèrent exécuter Composer '''en dehors de Docker''' (sur leur machine host) pour des raisons de performance (cache Composer partagé, pas de overhead Docker).
Ligne 763 : Ligne 764 :


Le choix dépend de votre workflow, d’où le caractère optionnel !
Le choix dépend de votre workflow, d’où le caractère optionnel !




[[Catégorie:Symfony]] [[Catégorie:Docker]]
[[Catégorie:Symfony]] [[Catégorie:Docker]]