« Symfony Docker » : différence entre les versions

Aucun résumé des modifications
 
(6 versions intermédiaires par le même utilisateur non affichées)
Ligne 134 : Ligne 134 :


La commande '''<code>composer dump-autoload</code>''' est une commande essentielle dans l’écosystème PHP/Composer. Elle régénère le fichier d’'''autoloading''' (chargement automatique des classes) sans réinstaller les dépendances. Voici ce qu’elle fait en détail :
La commande '''<code>composer dump-autoload</code>''' est une commande essentielle dans l’écosystème PHP/Composer. Elle régénère le fichier d’'''autoloading''' (chargement automatique des classes) sans réinstaller les dépendances. Voici ce qu’elle fait en détail :
-----


=== '''À quoi sert <code>composer dump-autoload</code> ?''' ===
=== '''À quoi sert <code>composer dump-autoload</code> ?''' ===
Ligne 159 : Ligne 156 :
<li><p>La commande les intègre dans l’autoloader.</p></li></ul>
<li><p>La commande les intègre dans l’autoloader.</p></li></ul>
</li></ol>
</li></ol>
-----


=== '''Quand l’utiliser ?''' ===
=== '''Quand l’utiliser ?''' ===
Ligne 180 : Ligne 176 :
| <code>composer dump-autoload</code>
| <code>composer dump-autoload</code>
|}
|}
-----


=== '''Différence avec <code>composer install</code> et <code>composer update</code>''' ===
=== '''Différence avec <code>composer install</code> et <code>composer update</code>''' ===
Ligne 194 : Ligne 187 :
* '''<code>composer dump-autoload</code>''' :<br />
* '''<code>composer dump-autoload</code>''' :<br />
'''Ne touche pas aux dépendances''' – ne fait que mettre à jour l’autoloader.
'''Ne touche pas aux dépendances''' – ne fait que mettre à jour l’autoloader.
-----


=== '''Exemple concret dans un projet Symfony''' ===
=== '''Exemple concret dans un projet Symfony''' ===
Ligne 213 : Ligne 203 :
<syntaxhighlight lang="bash">composer dump-autoload</syntaxhighlight></li></ul>
<syntaxhighlight lang="bash">composer dump-autoload</syntaxhighlight></li></ul>
</li></ol>
</li></ol>
-----


=== '''Bonnes pratiques''' ===
=== '''Bonnes pratiques''' ===
Ligne 229 : Ligne 216 :
Si vous montez un volume (<code>./:/var/www/html</code>), exécutez la commande '''dans le conteneur''' :</p>
Si vous montez un volume (<code>./:/var/www/html</code>), exécutez la commande '''dans le conteneur''' :</p>
<syntaxhighlight lang="bash">docker-compose exec app composer dump-autoload</syntaxhighlight></li></ul>
<syntaxhighlight lang="bash">docker-compose exec app composer dump-autoload</syntaxhighlight></li></ul>
-----


=== '''Résumé''' ===
=== '''Résumé''' ===
Ligne 246 : Ligne 230 :


== '''Symfony cache et composer cache avec Docker''' : ==
== '''Symfony cache et composer cache avec Docker''' : ==
-----


=== '''1. Rôle du dossier <code>/var/cache</code> dans Symfony''' ===
=== '''1. Rôle du dossier <code>/var/cache</code> dans Symfony''' ===
Ligne 256 : Ligne 237 :
'''Problème avec Docker :'''<br />
'''Problème avec Docker :'''<br />
Par défaut, ce cache est régénéré à chaque démarrage du conteneur → '''ralentissements''' (surtout en dev).
Par défaut, ce cache est régénéré à chaque démarrage du conteneur → '''ralentissements''' (surtout en dev).
-----


=== '''2. Stratégies pour optimiser le cache avec Docker''' ===
=== '''2. Stratégies pour optimiser le cache avec Docker''' ===
Ligne 272 : Ligne 250 :


'''Inconvénients :''' - Peut causer des problèmes de permissions (solved avec <code>chmod</code> ou <code>entrypoint.sh</code>).
'''Inconvénients :''' - Peut causer des problèmes de permissions (solved avec <code>chmod</code> ou <code>entrypoint.sh</code>).
-----


==== '''B. Utiliser un volume Docker nommé (prod + dev)''' ====
==== '''B. Utiliser un volume Docker nommé (prod + dev)''' ====
Ligne 294 : Ligne 269 :


exec "$@"</syntaxhighlight>
exec "$@"</syntaxhighlight>
-----


==== '''C. Cache warming en production''' ====
==== '''C. Cache warming en production''' ====
Ligne 309 : Ligne 282 :
COPY --from=builder /app /var/www/html
COPY --from=builder /app /var/www/html
RUN php bin/console cache:warmup  # ⚡ Pré-chauffe le cache</syntaxhighlight>
RUN php bin/console cache:warmup  # ⚡ Pré-chauffe le cache</syntaxhighlight>
-----


=== '''3. Gestion des environnements''' ===
=== '''3. Gestion des environnements''' ===
Ligne 328 : Ligne 299 :
| Cache éphémère (pas de montage)
| Cache éphémère (pas de montage)
|}
|}
-----


=== '''4. Exemple complet (docker-compose.yml)''' ===
=== '''4. Exemple complet (docker-compose.yml)''' ===
Ligne 350 : Ligne 318 :
       APP_ENV: dev
       APP_ENV: dev
       COMPOSER_CACHE_DIR: /tmp/composer</syntaxhighlight>
       COMPOSER_CACHE_DIR: /tmp/composer</syntaxhighlight>
-----
=== '''5. Bonnes pratiques''' ===
=== '''5. Bonnes pratiques''' ===


Ligne 360 : Ligne 325 :
<li><p>'''Permissions''' : Résolvez-les via <code>entrypoint.sh</code> ou <code>docker-compose</code> :</p>
<li><p>'''Permissions''' : Résolvez-les via <code>entrypoint.sh</code> ou <code>docker-compose</code> :</p>
<syntaxhighlight lang="yaml">user: "${UID:-1000}:${GID:-1000}"</syntaxhighlight></li></ol>
<syntaxhighlight lang="yaml">user: "${UID:-1000}:${GID:-1000}"</syntaxhighlight></li></ol>
-----


=== '''Différence avec Composer Cache''' ===
=== '''Différence avec Composer Cache''' ===
Ligne 384 : Ligne 346 :
| Warming dans l’image + volume
| Warming dans l’image + volume
|}
|}
-----


=== '''Résumé''' ===
=== '''Résumé''' ===
Ligne 605 : Ligne 564 :
</li></ul>
</li></ul>
</li></ol>
</li></ol>


=== 8. Avantages de cette configuration ===
=== 8. Avantages de cette configuration ===
Ligne 658 : Ligne 616 :
exec docker-php-entrypoint "$@"</syntaxhighlight>
exec docker-php-entrypoint "$@"</syntaxhighlight>
Cela signifie : 1. Votre script fait d’abord son travail personnalisé (vérifier/vendor et installer les dépendances si besoin) 2. Ensuite, il “passe la main” au processus PHP-FPM officiel, devenant ainsi le processus principal du container
Cela signifie : 1. Votre script fait d’abord son travail personnalisé (vérifier/vendor et installer les dépendances si besoin) 2. Ensuite, il “passe la main” au processus PHP-FPM officiel, devenant ainsi le processus principal du container


=== Alternative sans <code>exec</code> ===
=== Alternative sans <code>exec</code> ===
Ligne 759 : Ligne 716 :


Voici une version complète optimisée avec '''un service Composer dédié''', tout en gardant la configuration pour vos bundles locaux et l’intégration avec PHPStorm.
Voici une version complète optimisée avec '''un service Composer dédié''', tout en gardant la configuration pour vos bundles locaux et l’intégration avec PHPStorm.


=== Structure finale recommandée ===
=== Structure finale recommandée ===
Ligne 936 : Ligne 892 :
#* Port : 8080
#* Port : 8080
#* Path mappings comme ci-dessus
#* Path mappings comme ci-dessus


=== ✅ Points clés de cette configuration ===
=== ✅ Points clés de cette configuration ===