Aller au menu Aller au contenu
Accueil
blogue | Blogue | Quelle est la meilleure configuration d’environnement de développement Laravel ?

Quelle est la meilleure configuration d’environnement de développement Laravel ?

Photo de Mathieu Savage
Mathieu Savage
8 min
·
19 Décembre 2024

Dans le monde en constante évolution du développement web, avoir les bons outils peut faire toute la différence. Que vous soyez un développeur aguerri ou que vous débutiez, choisir le meilleur environnement de développement pour vos projets Laravel est une étape cruciale.

Chez Libéo, nous comprenons l’importance de l’efficacité et de la simplicité d’utilisation. C’est pourquoi nous avons exploré de nombreuses options afin de trouver l’environnement idéal.

Laravel, notre framework PHP de prédilection, offre une multitude d’outils conçus pour simplifier le processus de développement et vous aider à livrer du code plus rapidement. Mais si nous vous disions que notre environnement préféré est celui que nous avons conçu nous-mêmes, ici, chez Libéo ?

Découvrez Kubeo, notre solution sur mesure qui exploite la puissance de Docker pour simplifier et améliorer votre flux de développement.

Dans cet article, nous vous proposons un voyage à travers le temps : des débuts manuels avec des outils comme XAMPP, jusqu’à l’univers moderne et conteneurisé de Docker. Nous explorerons les forces et les limites des environnements de développement Laravel les plus populaires — Laravel Herd, Sail, Homestead et Valet — avant de vous présenter Kubeo, notre solution interne qui a révolutionné notre façon de développer des applications Laravel.

L’époque de XAMPP

Le bon vieux environnement de développement

Pour ceux qui se souviennent des jours d’avant Docker, la configuration d’un environnement de développement était un processus manuel et souvent fastidieux. À cette époque, des outils comme PHPStorm et VSCode n’existaient pas encore, et nous comptions sur Notepad++ et XAMPP.

Mais qu’est-ce que XAMPP exactement ? C’est un logiciel qui permet de configurer et d’exécuter une suite de services essentiels pour une application PHP, tels qu’Apache, MySQL et bien sûr PHP lui-même.

Soyons clairs : je pense que XAMPP est un excellent outil pour le développement PHP local. Mais en réalité, lorsqu’on travaille sur des projets collaboratifs, comme une API ou une simple application web, la configuration devient complexe. Ce n’est pas la tasse de thé de tout le monde — certaines personnes, comme moi, veulent simplement que ça fonctionne facilement et pouvoir committer du code le plus vite possible ! De plus, les différences de configuration entre les environnements locaux et ceux en production peuvent causer des problèmes importants.

Mais… ça marche sur ma machine ! Oui, mais… voilà.

L’écosystème Docker

Aujourd’hui, la plupart des gens ont au moins entendu parler de Docker. Mais au fond, qu’est-ce que c’est ?

Docker est une plateforme ouverte pour développer, livrer et exécuter des applications. Elle permet de séparer vos applications de votre infrastructure afin de livrer plus rapidement. Avec Docker, vous pouvez gérer votre infrastructure de la même manière que vos applications. En tirant parti des méthodologies de Docker pour la livraison, les tests et le déploiement du code, vous pouvez réduire considérablement le délai entre l’écriture du code et son exécution en production.

Extrait de https://docs.docker.com/get-started/docker-overview/

La possibilité de sauter l’étape de configuration, tout en couvrant l’ensemble de votre pile PHP à l’aide d’un seul fichier de configuration, est un véritable atout. L’utilisation de conteneurs Docker officiels, maintenus par la communauté, est quelque chose de remarquable.

Docker fonctionne sur Mac, Windows, Linux, et même très bien avec WSL sous Windows ! Des logiciels comme Docker Desktop offrent une interface conviviale qui simplifie la configuration de Docker.

Cependant, Docker à lui seul ne constitue pas une solution complète. C’est pourquoi Laravel propose plusieurs outils pour aider les développeurs à simplifier leurs chaînes de développement web. Voyons cela de plus près.

Les outils officiels de Laravel

Les outils de développement Laravel sont nombreux, chacun ayant ses avantages et ses inconvénients. Il existe beaucoup de documentation à ce sujet, mais voici un résumé rapide des principales offres officielles de Laravel :

Laravel Herd

Laravel Herd est un environnement de développement PHP one-click créé par Beyond Code en collaboration avec Laravel. Il est conçu pour être extrêmement rapide et simple à utiliser.

Avantages :

  • Prend en charge plusieurs versions de PHP.
  • Permet de basculer facilement entre les versions de PHP.
  • Permet d’exécuter des applications localement avec SSL.
  • Partage facile d’applications locales via Expose.

Inconvénients :

  • Ne comprend pas d’outils de gestion de bases de données.
  • La version Pro est coûteuse.

Laravel Sail

Laravel Sail est un environnement de développement officiel basé sur Docker pour Laravel. Il offre une interface en ligne de commande simple pour interagir avec Docker.

Avantages :

  • Conteneurs Docker préconfigurés pour PHP, MySQL, Redis, et plus encore.
  • Simple à installer et à utiliser.
  • Hautement personnalisable grâce à Docker Compose.

Inconvénients :

  • Nécessite une connaissance de Docker.

Laravel Homestead

Laravel Homestead est une boîte Vagrant officielle qui fournit un environnement de développement complet avec PHP, Nginx, MySQL et Redis préinstallés.

Avantages :

  • Offre un environnement de développement cohérent.
  • Prend en charge plusieurs versions de PHP.
  • L’isolation de l’environnement empêche les conflits avec d’autres logiciels locaux.

Inconvénients :

  • Nécessite Vagrant et VirtualBox, qui peuvent être gourmands en ressources.
  • L’installation est plus complexe que pour d’autres outils.

Laravel Valet

Laravel Valet est un environnement de développement léger conçu pour les utilisateurs de macOS. Il exécute Nginx en arrière-plan et utilise DnsMasq pour diriger les requêtes du domaine *.test vers les sites locaux.

Avantages :

  • Léger et rapide, avec une utilisation minimale des ressources.
  • Prend en charge plusieurs versions de PHP.
  • Intégration fluide avec d’autres outils comme Ngrok et Expose.

Inconvénients :

  • Limité à macOS.
  • Moins isolé que les environnements virtualisés, ce qui peut causer des conflits avec d’autres logiciels.

Et nous, alors ?

Qu’est-ce qui nous passionne chez Libéo ? Quel environnement de développement avons-nous choisi, et quelle solution offre les meilleures fonctionnalités pour propulser nos applications Laravel ?

Aucune ! Notre environnement de développement Laravel préféré, c’est notre propre logiciel, appelé Kubeo!

Kubeo et Docker

Kubeo est un logiciel écrit en Go, qui agit comme une surcouche (wrapper) à Docker Compose. Mais d’où vient-il ?

L’un de nos plus grands défis était la configuration initiale de nos projets Laravel — ou de tout autre projet, d’ailleurs. La diversité des types de projets chez Libéo nous donnait du fil à retordre, puisque chaque projet avait ses besoins spécifiques.

Kubeo répond à ces défis en :

  • harmonisant les versions de PHP, du local à la production ;
  • automatisant l’installation des dépendances ;
  • normalisant les outils de compilation ;
  • standardisant les bases de données MySQL et leurs accès ;
  • permettant le débogage plug-and-play ;
  • conteneurisant Node ;
  • fournissant des scripts avant/après, des commandes personnalisées, des pipelines connectés et un accès à Kubernetes.

Kubeo en fait beaucoup pour nous !

Le seul prérequis pour utiliser Kubeo est d’avoir Docker installé sur votre poste. Docker Desktop est un outil simple et convivial qui permet de démarrer, arrêter et configurer Docker en quelques clics.

Linux, Mac ou Windows

L’un des plus grands atouts de Kubeo est qu’il fonctionne sur toutes les plateformes. Hébergé sur notre plateforme GitLab autogérée (une alternative libre à GitHub), nos développeurs DevOps assurent la maintenance et le déploiement de Kubeo via des pipelines personnalisés. Ils publient des versions compatibles avec les architectures AMD64 et ARM. Quel que soit votre environnement de développement, Kubeo s’installe facilement et vous permet d’entamer un nouveau projet en quelques secondes.

Pourquoi cela fonctionne pour nous ?

L’idée centrale derrière Kubeo est d’éliminer le processus de configuration d’une application web. Une simple commande suffit pour démarrer toute la pile de développement :

Et voilà ! Mais concrètement, qu’est-ce que Kubeo fait ? Il se base sur trois grandes étapes : Before, Docker Compose Up et After. Les étapes Before et After sont entièrement configurables et peuvent varier d’un projet à l’autre. Voici le déroulement :

  • Before : cette étape consiste à copier et préparer les fichiers avant la mise en marche des conteneurs Docker. Que ce soit pour copier les fichiers d’environnement de base ou installer les dépendances avec NPM ou Composer, vous avez la liberté de préparer le terrain comme vous le souhaitez.
  • Docker Compose Up : c’est ici que la pile Docker est démarrée. Un fichier docker-compose.yml complet décrit la pile et toute sa configuration.
  • After : cette étape est surtout utilisée pour interagir avec la pile. Par exemple, exécuter des commandes Artisan pour migrer la base de données, vider le cache ou créer le lien de stockage. Et comme tout repose sur Bash, vous pouvez y ajouter tout ce dont votre projet Laravel a besoin.

Un flux de travail normalisé

Puisque tous nos projets sont gérés par Kubeo, les développeurs frontend, backend, juniors comme seniors, peuvent facilement démarrer un projet localement. La façon dont Kubeo simplifie la mise en place d’un environnement de développement améliore grandement notre efficacité.

Kubeo élimine le besoin d’installer PHP, Composer, Apache, Nginx, Redis, MySQL, Node ou encore les parseurs de syntaxe, et il permet même de partager la configuration de l’IDE pour un projet spécifique. Chez Libéo, nous maintenons une bibliothèque d’images Docker personnalisées, tirées des dépôts officiels, auxquelles nous ajoutons nos propres ajustements. Ainsi, nous offrons à nos développeurs des conteneurs de haute qualité, adaptés aux nombreuses fonctionnalités demandées par nos clients.

Du local à la production

L’un des plus grands avantages de Kubeo est que les images Docker locales sont pratiquement identiques à celles utilisées en production. Cela réduit énormément les mauvaises surprises lors du déploiement, et nous pouvons faire confiance à notre équipe QA — qui fait, bien sûr, un excellent travail !

Débogage

Puisque nous avons un contrôle total sur nos conteneurs Docker, le débogage est un jeu d’enfant. PHP, notre langage backend favori, se configure facilement avec XDebug, le standard de débogage. Les ports de débogage sont standardisés et la configuration est la même pour tous les projets PHP.

Une fois votre IDE préféré configuré avec le bon port et le bon mappage de dossiers, le débogueur est accessible instantanément — et il fonctionne, tout simplement !

Indépendant de l’IDE

Vous préférez PHPStorm à Visual Studio Code ? Ou encore Sublime Text ? Kubeo vous permet de préconfigurer votre projet Laravel avec les bons réglages.
Nous livrons nos projets avec des modèles de configuration pour les éditeurs les plus populaires, notamment VSCode et PHPStorm. Ces modèles incluent les extensions nécessaires et recommandées, ainsi que la configuration IDE appropriée pour une coloration syntaxique optimale en HTML, JavaScript, CSS et PHP.

Commandes extensibles

L’une des fonctionnalités les plus puissantes de Kubeo est la possibilité d’ajouter des commandes personnalisées à un projet. Voici quelques exemples typiques :

  • Composer : exécuté comme une commande Docker sur une image PHP personnalisée ;
  • Tinker : exécuté sur l’image Docker principale du projet PHP ;
  • Sync : synchronise les bases de données et les systèmes de fichiers entre environnements ;
  • MySQL : exécuté sur l’image Docker principale SQL du projet.

D’autres commandes populaires utilisées dans nos projets Laravel incluent :

  • l’exécution de Laravel IDE Helper pour mettre à jour la documentation des modèles ;
  • le démarrage d’un processus Laravel Reverb pour la communication en temps réel via WebSocket ;
  • le lancement d’une instance Node côté serveur pour les projets Inertia ;
  • la refactorisation du code avec PHPStan ;
  • le linting du code avec php-cs-fixer ;
  • le démarrage d’un écouteur de Webhooks Stripe.

Les packages Laravel préférés de Libéo

Au fil des années de développement d’applications web, nous avons découvert plusieurs outils et packages exceptionnels dans l’écosystème Laravel. Qu’il s’agisse d’applications web ou d’API, voici quelques incontournables que nous utilisons régulièrement :

  • spatie/laravel-medialibrary – la meilleure bibliothèque de gestion de médias pour Laravel, puissante et simple.
  • spatie/laravel-permission – le meilleur package de gestion des permissions.
  • spatie/laravel-query-builder – un puissant générateur de requêtes pour les API RESTful.
  • spatie/laravel-data – un DTO simple et puissant ; le typage PHP est un atout précieux !
  • Laravel Scout – une recherche en texte intégral simple pour vos modèles Eloquent.
  • Laravel Sanctum – un système d’authentification léger pour les applications monopage.
  • Filament – une excellente alternative à Laravel Nova.
  • laravel-actions – une nouvelle façon d’organiser la logique de vos applications Laravel autour des actions qu’elles accomplissent.
  • Inertia.js – créez des applications monopage sans API !
  • Laravel Horizon – un outil puissant pour gérer les files d’attente et les workers.
  • Sentry pour Laravel – simplifie le débogage et la gestion des erreurs.

Conclusion

Dans un avenir rapproché, Libéo espère ouvrir le code source de Kubeo, car le logiciel libre est au cœur de notre culture. Nous utilisons des technologies libres au quotidien et croyons profondément en leur importance. Nous espérons donc pouvoir partager cet outil fantastique avec vous un jour.

En attendant, nous vous suggérons d’explorer Laravel Sail. Son fonctionnement est très proche de celui de Kubeo, et nous croyons que tout développeur devrait s’intéresser à l’écosystème Docker : comment construire vos propres images, déboguer à l’intérieur des conteneurs, connecter plusieurs services dans un réseau Docker, etc.
En le faisant, vous serez prêt à tirer pleinement parti des capacités de Kubeo lorsqu’il sera disponible, tout en acquérant une compréhension solide des pratiques modernes de développement qui peuvent déjà améliorer vos projets dès aujourd’hui.

Articles similaires

Retour au haut de la page