{"id":17929,"date":"2024-08-15T22:10:07","date_gmt":"2024-08-15T22:10:07","guid":{"rendered":"https:\/\/www.directimpactsolutions.com\/deploiements-laravel\/"},"modified":"2025-10-01T03:22:29","modified_gmt":"2025-10-01T03:22:29","slug":"deploiements-laravel","status":"publish","type":"post","link":"https:\/\/www.directimpactsolutions.com\/fr\/deploiements-laravel\/","title":{"rendered":"D\u00e9ploiements Laravel"},"content":{"rendered":"<p>J&rsquo;aimerais vous parler du d\u00e9ploiement des applications Laravel pour les environnements de d\u00e9veloppement et de production. La fa\u00e7on par d\u00e9faut d&rsquo;installer une application Laravel pour le d\u00e9veloppement utilise d\u00e9sormais la technologie Docker, c&rsquo;est pourquoi je souhaite mentionner une ou deux choses sur Docker, Laravel Sail, Spin, et les utilisations de chaque technologie. <\/p><div class=\"wp-block-uagb-image uagb-block-2afa8357 wp-block-uagb-image--layout-default wp-block-uagb-image--effect-static wp-block-uagb-image--align-none\"><figure class=\"wp-block-uagb-image__figure\"><img decoding=\"async\" srcset=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/07\/Laravel-deployments-758x1024.png ,https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/07\/Laravel-deployments.png 780w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/07\/Laravel-deployments.png 360w\" sizes=\"auto, (max-width: 480px) 150px\" src=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/07\/Laravel-deployments-758x1024.png\" alt=\"D\u00e9ploiements Laravel\" class=\"uag-image-17591\" width=\"600\" height=\"1192\" title=\"D\u00e9ploiements-Laravel\" loading=\"lazy\" role=\"img\"><\/figure><\/div><p><\/p><h2 class=\"wp-block-heading\">Conteneurs Docker vs machines virtuelles<\/h2><p>Dans les machines virtuelles (VM) plus anciennes et plus traditionnelles, la configuration ressemblerait \u00e0 celle d&rsquo;un serveur physique, avec un syst\u00e8me d&rsquo;exploitation complet et tous les logiciels n\u00e9cessaires install\u00e9s dessus.<\/p><p>Les conteneurs Docker sont g\u00e9n\u00e9ralement plus l\u00e9gers. Chaque conteneur Docker utilise le <g id=\"gid_0\">noyau<\/g> du syst\u00e8me d&rsquo;exploitation de l&rsquo;h\u00f4te au lieu d&rsquo;avoir son propre syst\u00e8me complet. De plus, chaque conteneur est g\u00e9n\u00e9ralement d\u00e9compos\u00e9 en un \u00e9l\u00e9ment le plus petit possible.  <\/p><p>Malgr\u00e9 le fait que les conteneurs Docker utilisent le noyau de la machine h\u00f4te, ils n&rsquo;ont aucune connaissance de cette derni\u00e8re et fonctionnent donc de mani\u00e8re isol\u00e9e. Cela peut \u00eatre un \u00e9norme avantage pour la s\u00e9curit\u00e9. <\/p><h3 class=\"wp-block-heading has-ast-global-color-2-color has-text-color has-link-color wp-elements-2ec553d1a3b9edfc42f294d0c8ca6f50\">Qu&rsquo;est-ce que Docker Compose ?<\/h3><p>Sachant que les conteneurs Docker sont g\u00e9n\u00e9ralement d\u00e9compos\u00e9s en petits morceaux, il s&rsquo;ensuit qu&rsquo;avec des applications plus grandes ou compliqu\u00e9es, nous pourrions en avoir besoin de plusieurs. Dans ces cas-l\u00e0, il faudra pouvoir les orchestrer ensemble harmonieusement ; c&rsquo;est l\u00e0 que Docker Compose entre en jeu. Docker Compose offre une structure de fichier de configuration astucieuse que le technicien peut utiliser pour d\u00e9finir toutes les parties et la fa\u00e7on dont elles fonctionneront ensemble.  <\/p><p>Par exemple, je pourrais d\u00e9finir un fichier de configuration Docker Compose qui sp\u00e9cifierait qu&rsquo;un serveur de base de donn\u00e9es et un serveur Web sont tous deux n\u00e9cessaires, et que le serveur Web d\u00e9pend de la disponibilit\u00e9 du serveur de base de donn\u00e9es.<\/p><p>Une fois la configuration pour Docker Compose d\u00e9finie, la mise en place de votre environnement se fait g\u00e9n\u00e9ralement en une seule commande. Le d\u00e9montage est tout aussi simple. <\/p><h3 class=\"wp-block-heading has-ast-global-color-2-color has-text-color has-link-color wp-elements-9cc89b13559798baa3adf9eb26e06bdd\">Avantages<\/h3><p>Nous utilisons la technologie Docker pour normaliser notre environnement de d\u00e9veloppement depuis un certain temps d\u00e9j\u00e0 ; cela a fait une \u00e9norme diff\u00e9rence \u00e0 plusieurs \u00e9gards.<\/p><p>Les environnements locaux propres \u00e0 chacun de nos d\u00e9veloppeurs sont d\u00e9sormais exactement les m\u00eames, ce qui \u00e9limine le probl\u00e8me du \u00ab\u00a0\u00c7a marche sur ma machine\u00a0\u00bb. Cela est vrai m\u00eame pour les d\u00e9veloppeurs qui utilisent les principaux syst\u00e8mes d&rsquo;exploitation (<g id=\"gid_0\">Windows\/Mac\/Linux<\/g>). Les d\u00e9ploiements de machines de d\u00e9veloppeurs sont d\u00e9sormais rapides et efficaces, car elles sont toutes standardis\u00e9es, et d\u00e9ploy\u00e9es de mani\u00e8re standardis\u00e9e, g\u00e9n\u00e9ralement avec une seule commande.  <\/p><p>Un autre point fort du travail avec les conteneurs Docker est que tous les logiciels n\u00e9cessaires \u00e0 un projet sont g\u00e9n\u00e9ralement contenus dans les conteneurs, ce qui permet de passer tr\u00e8s facilement d&rsquo;un projet \u00e0 l&rsquo;autre sans se soucier de configurations logicielles conflictuelles. De plus, Docker Compose s&rsquo;auto-documente d&rsquo;une certaine mani\u00e8re ; en conservant sa configuration au sein de nos r\u00e9f\u00e9rentiels de code, il est assez simple de d\u00e9terminer avec quelle version de PHP un syst\u00e8me a \u00e9t\u00e9 con\u00e7u (\u00e0 titre d&rsquo;exemple). <\/p><h2 class=\"wp-block-heading\">Laravel + Docker = Sail<\/h2><p>Ici, chez Direct Impact Solutions, nous avons utilis\u00e9 <a href=\"https:\/\/laravel.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">PHP Laravel<\/a> pour un nombre important de syst\u00e8mes. Les cr\u00e9ateurs de Laravel ont m\u00eame adopt\u00e9 l&rsquo;utilisation de Docker comme m\u00e9thode d&rsquo;installation par d\u00e9faut en utilisant leur propre syst\u00e8me Docker Compose, <a href=\"https:\/\/laravel.com\/docs\/sail\" target=\"_blank\" rel=\"noreferrer noopener\">Laravel Sail<\/a>. Laravel Sail est personnalisable et facile \u00e0 utiliser, c&rsquo;est pourquoi nous l&rsquo;avons utilis\u00e9 dans le cadre de certains de nos projets. J&rsquo;aime la facilit\u00e9 avec laquelle il est possible d&rsquo;ajouter de nouveaux conteneurs de services dans un projet. Par exemple, si en cours de d\u00e9veloppement l&rsquo;application a maintenant besoin d&rsquo;envoyer des courriels, il est possible d&rsquo;ajouter un nouveau conteneur pour <code>mailpit<\/code> \u00e0 l&rsquo;aide de commandes int\u00e9gr\u00e9es.    <\/p><h3 class=\"wp-block-heading has-ast-global-color-2-color has-text-color has-link-color wp-elements-5f87623f3ccaa8544bf154724ad2a953\">Liste de souhaits pour Laravel Sail<\/h3><p>Une chose regrettable \u00e0 propos de Laravel Sail, cependant, est le fait qu&rsquo;il n&rsquo;utilise pas un serveur web traditionnel, mais plut\u00f4t une commande artisan (<code>artisan serve<\/code>) qui agit comme une enveloppe autour du serveur web int\u00e9gr\u00e9 de PHP. C&rsquo;est regrettable, car <a href=\"https:\/\/www.php.net\/manual\/en\/features.commandline.webserver.php\" target=\"_blank\" rel=\"noreferrer noopener\">le serveur web int\u00e9gr\u00e9 de PHP<\/a> n&rsquo;ex\u00e9cute qu&rsquo;un seul processus \u00e0 la fois (single-thread). En tant que tel, il n&rsquo;est pas con\u00e7u pour g\u00e9rer des requ\u00eates multiples et ne devrait pas \u00eatre utilis\u00e9 pour les environnements de production.  <\/p><p>\u00c9tant donn\u00e9 que Laravel Sail est construit \u00e0 l&rsquo;aide de la technologie Docker Compose, il devrait (en th\u00e9orie) \u00eatre possible de le faire fonctionner \u00e0 l&rsquo;aide d&rsquo;un serveur web traditionnel, de sorte que nous n&rsquo;aurions pas les limitations qui nous emp\u00eachent d&rsquo;utiliser cette technologie en production. Malheureusement, je soup\u00e7onne que ce n&rsquo;est pas pr\u00e8s d&rsquo;arriver. Cela a peut-\u00eatre quelque chose \u00e0 voir avec le fait que les d\u00e9veloppeurs de Laravel et de Laravel Sail ont \u00e9galement un produit de d\u00e9ploiement et de gestion de la production connu sous le nom de <a href=\"https:\/\/forge.laravel.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Laravel Forge<\/a>.  <\/p><h3 class=\"wp-block-heading has-ast-global-color-2-color has-text-color has-link-color wp-elements-776ca2f4b44323861f5881aa0225df62\">Et maintenant ?<\/h3><p>En raison de notre appr\u00e9ciation de la normalisation, de la simplicit\u00e9 et de Docker\/Sail, nous \u00e9tudions d&rsquo;autres technologies dans l&rsquo;espoir de trouver quelque chose qui offre la continuit\u00e9 que nous souhaitons entre les environnements de d\u00e9veloppement et de production.<\/p><h2 class=\"wp-block-heading\">Spin<\/h2><p>ServerSideUP a r\u00e9cemment publi\u00e9 un outil de d\u00e9veloppement open-source, <a href=\"https:\/\/serversideup.net\/open-source\/spin\/\" target=\"_blank\" rel=\"noreferrer noopener\">Spin<\/a>, qui est tr\u00e8s similaire \u00e0 Laravel Sail. Spin vise \u00e0 faire exactement ce que nous voulions \u00e0 l&rsquo;origine de Laravel Sail, et m\u00eame plus ! Non seulement il nous permet de r\u00e9utiliser le m\u00eame environnement de d\u00e9veloppement au sein de la production, mais il en fait plus.  <\/p><h3 class=\"wp-block-heading has-ast-global-color-2-color has-text-color has-link-color wp-elements-45f7beb25d1277b6655382f332f45887\">Utilisation de Spin<\/h3><p>Pour commencer \u00e0 utiliser Laravel Sail, le technicien ex\u00e9cutait souvent <code>sail up -d<\/code> \u00e0 partir de la ligne de commande. De m\u00eame, lorsqu\u2019on utilise Spin au lieu de Sail, on peut ex\u00e9cuter <code>spin up -d<\/code> pour cr\u00e9er un environnement. Des commandes similaires sont \u00e9galement fournies pour ex\u00e9cuter des commandes \u00e0 l\u2019int\u00e9rieur des conteneurs Docker (il est courant d\u2019ex\u00e9cuter des commandes <code>PHP artisan<\/code> depuis le conteneur <code>PHP<\/code> et des commandes <code>npm run<\/code> depuis le conteneur <code>node<\/code> ). <\/p><h3 class=\"wp-block-heading has-ast-global-color-2-color has-text-color has-link-color wp-elements-8f5fd7274ee79e7ba135ae692460e3ef\">V\u00e9rifications des mises \u00e0 jour de Spin<\/h3><p>Spin v\u00e9rifie les mises \u00e0 jour avec la commande <code>spin up<\/code>. C&rsquo;est rafra\u00eechissant \u00e0 voir, et ce n&rsquo;est pas quelque chose que j&rsquo;ai vu dans Laravel Sail. <\/p><h3 class=\"wp-block-heading has-ast-global-color-2-color has-text-color has-link-color wp-elements-f74d4e5d88065dd148069fb08f4a5f32\">Diff\u00e9rences dans les environnements de Spin<\/h3><p>En th\u00e9orie, l&rsquo;utilisation de Spin pour les d\u00e9ploiements de dev et de production devrait toujours produire des environnements identiques pour les utilisateurs finaux. Cependant, des fichiers <code>Docker-compose.yml<\/code> distincts sont fournis pour les deux, de sorte que pour les cas o\u00f9 certaines choses doivent changer entre les environnements (exemple <code>mailpit<\/code> en dev, serveur de messagerie appropri\u00e9 en production), Spin le supporte. Des fichiers <code>Docker-compose.yml<\/code> sont fournis pour dev, production et m\u00eame pour l&rsquo;int\u00e9gration continue (CI).  <\/p><h3 class=\"wp-block-heading has-ast-global-color-2-color has-text-color has-link-color wp-elements-aa5dd98cd5edfcdf222336b621849c98\">Configuration de Spin<\/h3><p>Un projet qui a int\u00e9gr\u00e9 Spin sera livr\u00e9 avec d&rsquo;autres fichiers de configuration au-del\u00e0 des simples fichiers de configuration de Docker Compose. Ces fichiers de configuration suppl\u00e9mentaires permettent au technicien de d\u00e9finir des d\u00e9tails sur les connexions SSH et les comptes utilisateurs qui seront charg\u00e9s de d\u00e9ployer la solution. Lorsqu&rsquo;elle est d\u00e9ploy\u00e9e dans un environnement de production, la technologie Docker Swarm est utilis\u00e9e. Il existe m\u00eame un fichier <code>.spin-inventory.ini<\/code> au format <a href=\"https:\/\/docs.ansible.com\/ansible\/latest\/inventory_guide\/intro_inventory.html\" target=\"_blank\" rel=\"noreferrer noopener\">Ansible inventory<\/a> o\u00f9 il est possible de d\u00e9finir les serveurs \u00e0 utiliser.   <\/p><h3 class=\"wp-block-heading has-ast-global-color-2-color has-text-color has-link-color wp-elements-11c6da8dc38a5a7fad3d07f832ef51b5\">Chiffrement de Spin<\/h3><p>\u00c9tant donn\u00e9 que Spin utilise un certain nombre de fichiers de configuration qui pourraient potentiellement contenir des informations sensibles, il est important de noter que Spin encourage fortement le cryptage de ces fichiers. Une fois crypt\u00e9s, il est possible de stocker en toute confiance ces fichiers dans votre r\u00e9f\u00e9rentiel de code. Spin est \u00e9quip\u00e9 de son propre <a href=\"https:\/\/serversideup.net\/open-source\/spin\/docs\/command-reference\/vault\" target=\"_blank\" rel=\"noreferrer noopener\">coffre-fort<\/a> qui contient des commandes pour le cryptage, le d\u00e9cryptage, l&rsquo;\u00e9dition, etc.  <\/p><h3 class=\"wp-block-heading has-ast-global-color-2-color has-text-color has-link-color wp-elements-e9d378a4c7391ae69044e99ac7779f0d\">D\u00e9ploiements sans temps d&rsquo;arr\u00eat<\/h3><p>Spin aide les techniciens en leur fournissant des mod\u00e8les d&rsquo;action GitHub et de la <a href=\"https:\/\/serversideup.net\/open-source\/spin\/docs\/guide\/zero-downtime-deployments-with-github-actions\" target=\"_blank\" rel=\"noreferrer noopener\">documentation \u00e0 l&rsquo;appui<\/a>. Les nouveaux projets Laravel peuvent \u00eatre d\u00e9marr\u00e9s avec Spin. Alternativement, Spin peut \u00eatre ajout\u00e9 \u00e0 un projet Laravel existant.  <\/p><p>Quelle que soit l&rsquo;approche adopt\u00e9e, des actions GitHub mod\u00e9lis\u00e9es sont accessibles. L&rsquo;action de facto consiste \u00e0 d\u00e9ployer en production chaque fois qu&rsquo;une nouvelle version est ajout\u00e9e \u00e0 GitHub. La mise en place de cette action n\u00e9cessite quelques autres \u00e9l\u00e9ments, mais Spin vous guide tout au long de ce processus.  <\/p><h3 class=\"wp-block-heading has-ast-global-color-2-color has-text-color has-link-color wp-elements-c441e47fc192cb56c9ced515e20b684a\">Conclusion<\/h3><p>Spin est similaire \u00e0 Laravel Sail, utilise des technologies \u00e9prouv\u00e9es comme Docker et Ansible, r\u00e9pondant aux crit\u00e8res de s\u00e9curit\u00e9 et de flexibilit\u00e9, et \u00e9limine m\u00eame le probl\u00e8me d&rsquo;avoir des environnements de production et de d\u00e9veloppement diff\u00e9rents (ce qui est la raison pour laquelle la plupart d&rsquo;entre nous ont commenc\u00e9 \u00e0 utiliser Docker en premier lieu). Spin contribue \u00e9galement aux d\u00e9ploiements sans temps d&rsquo;arr\u00eat, ce qui en fait un outil tr\u00e8s prometteur dans nos coffre \u00e0 outils. <\/p>","protected":false},"excerpt":{"rendered":"<p>J&rsquo;aimerais vous parler du d\u00e9ploiement des applications Laravel pour les environnements de d\u00e9veloppement et de production. La fa\u00e7on par d\u00e9faut d&rsquo;installer une application Laravel pour le d\u00e9veloppement utilise d\u00e9sormais la technologie Docker, c&rsquo;est pourquoi je souhaite mentionner une ou deux choses sur Docker, Laravel Sail, Spin, et les utilisations de chaque technologie. Conteneurs Docker vs &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.directimpactsolutions.com\/fr\/deploiements-laravel\/\"> <span class=\"screen-reader-text\">D\u00e9ploiements Laravel<\/span> Lire la suite >><\/a><\/p>\n","protected":false},"author":7,"featured_media":17669,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"","footnotes":""},"categories":[37],"tags":[],"class_list":["post-17929","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web"],"uagb_featured_image_src":{"full":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/07\/iStock-2123149472-1.jpg",926,576,false],"thumbnail":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/07\/iStock-2123149472-1-150x150.jpg",150,150,true],"medium":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/07\/iStock-2123149472-1-300x187.jpg",300,187,true],"medium_large":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/07\/iStock-2123149472-1-768x478.jpg",768,478,true],"large":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/07\/iStock-2123149472-1.jpg",926,576,false],"1536x1536":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/07\/iStock-2123149472-1.jpg",926,576,false],"2048x2048":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/07\/iStock-2123149472-1.jpg",926,576,false],"woocommerce_thumbnail":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/07\/iStock-2123149472-1-300x300.jpg",300,300,true],"woocommerce_single":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/07\/iStock-2123149472-1-600x373.jpg",600,373,true],"woocommerce_gallery_thumbnail":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/07\/iStock-2123149472-1-100x100.jpg",100,100,true]},"uagb_author_info":{"display_name":"Matt Leering","author_link":"https:\/\/www.directimpactsolutions.com\/fr\/author\/matt-leering\/"},"uagb_comment_info":0,"uagb_excerpt":"J&rsquo;aimerais vous parler du d\u00e9ploiement des applications Laravel pour les environnements de d\u00e9veloppement et de production. La fa\u00e7on par d\u00e9faut d&rsquo;installer une application Laravel pour le d\u00e9veloppement utilise d\u00e9sormais la technologie Docker, c&rsquo;est pourquoi je souhaite mentionner une ou deux choses sur Docker, Laravel Sail, Spin, et les utilisations de chaque technologie. Conteneurs Docker vs\u2026","_links":{"self":[{"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/posts\/17929","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/comments?post=17929"}],"version-history":[{"count":3,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/posts\/17929\/revisions"}],"predecessor-version":[{"id":20720,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/posts\/17929\/revisions\/20720"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/media\/17669"}],"wp:attachment":[{"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/media?parent=17929"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/categories?post=17929"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/tags?post=17929"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}