Introduction
Dans ce tutoriel, nous allons apprendre à installer et configurer un nouveau projet Laravel en utilisant Docker et Laravel Sail. Nous allons couvrir les étapes nécessaires pour mettre en place un environnement de développement complet et fonctionnel, incluant la configuration de Docker, la création d’un projet Laravel, et l’utilisation de Laravel Sail pour gérer et exécuter votre application. Suivez ces étapes pour démarrer rapidement et efficacement avec Laravel et Docker. Vous découvrirez comment Laravel Sail peut simplifier votre flux de travail de développement en fournissant un environnement de développement cohérent et préconfiguré.
Prérequis
- Avoir Docker et Docker Compose installés sur votre machine.
- Avoir un accès à internet pour télécharger les dépendances nécessaires.
Créer un Nouveau Projet Laravel
Démarrez Docker, puis ouvrez votre terminal.
Utilisez la commande suivante pour créer un nouveau projet Laravel avec Laravel Sail :
curl -s "https://laravel.build/myapi" | bash
Cette commande téléchargera et installera Laravel et Laravel Sail dans un nouveau répertoire nommé myapi
.
Démarrer les Conteneurs Docker
Naviguez dans le répertoire de votre projet :
cd myapi
Démarrez les conteneurs Docker en utilisant Laravel Sail :
./vendor/bin/sail up -d
Lorsque vous êtes invité à entrer un mot de passe, utilisez celui que vous utilisez pour vous connecter à votre compte utilisateur sur votre ordinateur. Il s’agit du même mot de passe que vous utilisez pour déverrouiller votre ordinateur ou pour vous connecter à votre session utilisateur
Configurer Laravel Sail
Arrêtez les conteneurs Sail pour effectuer des modifications :
./vendor/bin/sail down
Ajoutez PostgreSQL à votre environnement Sail :
php artisan sail:add
Lors de l’exécution de cette commande, vous serez invité à sélectionner les services à ajouter. Par défaut, mysql
est sélectionné. Suivez ces étapes pour sélectionner pgsql
à la place :
- Désélectionnez
Mysql
en utilisant les touches fléchées pour naviguer jusqu’àmysql
et appuyez surESPACE
pour désélectionner MySQL. - Sélectionnez PostgreSQL en utilisant les touches fléchées pour naviguer jusqu’à
pgsql
et appuyez surESPACE
pour sélectionner PostgreSQL. - Appuyez sur
Entrée
pour valider votre sélection et continuer l’installation.
Modifiez le fichier .env
pour utiliser PostgreSQL a la racine de votre projet :
DB_CONNECTION=pgsql DB_HOST=pgsql DB_PORT=5432 DB_DATABASE=laravel DB_USERNAME=sail DB_PASSWORD=password
Ajoutons Adminer pour gérer PostgreSQL
Adminer est un outil léger et puissant pour gérer les bases de données via une interface web. Il est similaire à phpMyAdmin pour une base de données MySQL mais offre une prise en charge plus large des bases de données, y compris PostgreSQL. Voici les étapes détaillées pour ajouter Adminer à votre fichier docker-compose.yml
Étape 1 : Ajouter Adminer à Docker Compose
Vous avez déjà ajouté le service Adminer dans votre fichier docker-compose.yml
:
adminer: image: adminer restart: always ports: - 8080:8080 networks: - sail
Cela configure Adminer pour être accessible sur le port 8080 de votre machine locale.
Démarrer les Conteneurs Docker avec PostgreSQL
./vendor/bin/sail up -d
Exécuter les Migrations de la Base de Données
Les migrations dans Laravel sont essentielles pour configurer la structure de votre base de données. Elles créent et mettent à jour les tables nécessaires pour que votre application fonctionne correctement.
Dans cette section, nous verrons comment exécuter les migrations pour que votre base de données soit correctement configurée.
./vendor/bin/sail artisan migrate
Avant de démarrer Sail, assurez-vous qu’aucun autre serveur web ou base de données ne fonctionne sur votre ordinateur local. Cela évite les conflits de ports et garantit que Sail peut utiliser les ressources nécessaires.
Accès à l’Application
Une fois que les conteneurs de l’application ont été démarrés, vous pouvez accéder au projet dans votre navigateur web à l’adresse suivante :
http://localhost/
Cette adresse ouvre la page d’accueil de votre application Laravel, indiquant que le serveur web et les autres services nécessaires sont opérationnels.
Ajouter Sail à Votre Alias de Commande (Optionnel)
Pour simplifier l’utilisation de Sail, vous pouvez ajouter un alias à votre shell afin de ne pas avoir à taper ./vendor/bin/sail
à chaque fois.
Pour Mac et Linux
Selon le shell que vous utilisez, ouvrez le fichier de configuration correspondant :
Pour Bash (.bashrc
) :
nano ~/.bashrc
Pour Zsh (.zshrc
) :
nano ~/.zshrc
Ajouter l’Alias :
Ajoutez la ligne suivante à la fin du fichier pour créer un alias pour Laravel Sail :
alias sail='[ -f sail ] && sh sail || sh vendor/bin/sail'
Pour Windows
Si vous utilisez un terminal compatible avec les scripts de shell comme Git Bash, WSL (Windows Subsystem for Linux), ou Cygwin :
Ouvrez le fichier de configuration de votre shell :
- Pour Git Bash et Cygwin (
.bashrc
) :
nano ~/.bashrc
- Pour WSL (
.bashrc
ou.zshrc
selon le shell que vous utilisez) :
nano ~/.bashrc
# ou
nano ~/.zshrc
Ajoutez l’alias à la fin du fichier :
alias sail='[ -f sail ] && sh sail || sh vendor/bin/sail'
Enregistrez et fermez le fichier :
- Appuyez sur
Ctrl + X
pour quitter. - Appuyez sur
Y
pour confirmer l’enregistrement. - Appuyez sur
Entrée
pour valider le nom du fichier.
Rechargez votre fichier de configuration de shell :
source ~/.bashrc
# ou
source ~/.zshrc
Maintenant, vous pouvez utiliser sail directement dans votre terminal :
sail up
Démarrage et Arrêt de Sail
Laravel Sail facilite la gestion de votre environnement de développement en utilisant Docker. Voici comment démarrer et arrêter facilement vos conteneurs Docker avec Sail.
Démarrage des Conteneurs Docker
Pour démarrer tous les conteneurs Docker définis dans le fichier docker-compose.yml
de votre application, exécutez la commande suivante :
sail up
Cette commande démarre l’application et tous les services associés (comme la base de données) en utilisant Docker.
Démarrage en Mode Détaché
Pour démarrer tous les conteneurs Docker en arrière-plan (mode “détaché”), utilisez la commande suivante :
sail up -d
En mode détaché, les conteneurs continueront à fonctionner en arrière-plan, vous permettant de fermer votre terminal ou d’exécuter d’autres commandes sans interrompre l’exécution des conteneurs.
Gérer la base de données
Une fois que tout est en place, vous pouvez accéder à Adminer via votre navigateur web :
- Ouvrez votre navigateur.
- Accédez à Adminer à l’adresse suivante :
http://localhost:8080
Se Connecter à la Base de Données PostgreSQL
- Sélectionnez le type de base de données : Choisissez
PostgreSQL
dans le menu déroulant. - Entrez les informations de connexion :
- Serveur :
pgsql
(oulocalhost
si vous êtes à l’extérieur de Docker) - Nom d’utilisateur :
sail
(ou la valeur deDB_USERNAME
dans votre fichier.env
) - Mot de passe :
password
(ou la valeur deDB_PASSWORD
dans votre fichier.env
) - Base de données :
laravel
(ou la valeur deDB_DATABASE
dans votre fichier.env
)
- Serveur :
- Cliquez sur “Connecter” pour accéder à la base de données.
Arrêter les Conteneurs Docker
Pour arrêter tous les conteneurs, appuyez simplement sur Control + C
dans le terminal où Sail est en cours d’exécution. Cela arrêtera tous les conteneurs en cours d’exécution.
Si les conteneurs fonctionnent en arrière-plan (mode détaché), utilisez la commande suivante pour les arrêter :
sail stop
Conclusion
Ce tutoriel nous a guidés à travers la configuration d’un projet Laravel avec Docker et Laravel Sail, en intégrant PostgreSQL comme base de données. Nous avons appris à créer et configurer notre projet, à démarrer et arrêter les conteneurs Docker, à vérifier et créer la base de données, et à exécuter les migrations pour préparer la structure de la base de données. Nous avons également simplifié l’utilisation de Sail en ajoutant un alias. Avec cette configuration, nous disposons d’un environnement de développement Laravel robuste et prêt à l’emploi.
Développeuse Fullstack passionnée par le code, je suis diplômée en Programmation/Développement informatique de Sup’Info. Maîtrisant des langages comme PHP, JAVA et C++, je m’adapte facilement à différents environnements techniques. Mon parcours m'a permis de travailler sur une variété de projets, allant du développement Web et mobile à la création d'API et d'applications monétiques pour TPE. J'ai également une bonne connaissance de frameworks tels que Laravel, Tailwind CSS, Spring Boot et React Native.