Nouveau : Datasets open source gratuits disponibles !Decouvrir →
🐳
Intermediaire 25 min Laravel

Docker Compose : Laravel + MySQL

Pourquoi Docker Compose : Laravel + MySQL ?

Docker Compose est une outil puissant qui permet de définir et de gérer les applications multi-conteneurs en utilisant un seul fichier YAML. Dans le contexte du développement Laravel, il est particulièrement utile pour créer des environnements d'intégration locale qui simulent la production. Cela permet aux développeurs de travailler sur leurs projets sans se soucier des dépendances externes et de s'assurer que l'environnement de production est tout aussi cohérent.

Un cas concret serait le développement d'une application Laravel avec une base de données MySQL. Sans Docker Compose, il faudrait installer manuellement la version appropriée de PHP, Composer, Node.js, MySQL et toute autre dépendance requise. Avec Docker Compose, on peut tout cela en quelques commandes simples.

Prerequis

  • Connaissance de base de Laravel et Symfony
  • Connaissance des conteneurs Docker et Dockerfile
  • Installation de Docker (version 20.10 ou ultérieure)
  • Installation de Docker Compose (version 1.29 ou ultérieure)

Concepts fondamentaux

1. docker-compose.yml

Ce fichier est la configuration principale qui définit les services, la réseau et le volume pour votre application.

## docker-compose.yml
version: '3.8'

services:
  app:
    build: .
    ports:
      - "8000:8000"
    volumes:
      - .:/var/www/html
    environment:
      - APP_ENV=local
      - DB_HOST=db
      - DB_PORT=3306
      - DB_DATABASE=laravel
      - DB_USERNAME=root
      - DB_PASSWORD=

  db:
    image: mysql:8.0
    volumes:
      - db_data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=laravel

2. Dockerfile

Ce fichier est utilisé pour construire l'image du conteneur qui sera lancé.

## Dockerfile
FROM php:7.4-fpm

## Installation des dépendances système
RUN apt-get update && apt-get install -y \
    libpng-dev \
    zip \
    unzip \
    git \
    curl

## Installer PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring bcmath

## Installer Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

## Copier les fichiers du projet dans le conteneur
WORKDIR /var/www/html

3. Création de la structure du projet

On crée une structure de base pour notre projet Laravel.

mkdir my-laravel-app
cd my-laravel-app

## Créer un nouveau projet Laravel
composer create-project --prefer-dist laravel/laravel .

Mise en pratique : projet fil rouge

Étape 1 : Configurer docker-compose.yml et Dockerfile

Comme montré dans les concepts fondamentaux, le docker-compose.yml et le Dockerfile sont déjà configurés.

Étape 2 : Créer la base de données MySQL

On exécute la commande suivante pour démarrer les services définis dans docker-compose.yml.

docker-compose up -d

Cela va télécharger les images nécessaires si elles ne sont pas déjà présentes et les démarrer en arrière-plan.

Étape 3 : Installer les dépendances de Laravel

On accède au conteneur PHP avec la commande suivante :

docker-compose exec app bash

Dans le shell du conteneur, on installe les dépendances de notre projet :

composer install
npm install
php artisan migrate

Étape 4 : Créer une migration et un modèle

On crée une migration pour la table tasks et un modèle correspondant.

## Créer une migration
php artisan make:migration create_tasks_table --create=tasks

## Editer la migration dans database/migrations

Étape 5 : Définir le modèle et les contrôleurs

On crée un modèle et des contrôleurs pour gérer les tâches.

## Créer un modèle
php artisan make:model Task

## Créer des contrôleurs pour les tâches
php artisan make:controller TaskController --resource

Étape 6 : Définir les routes

On ajoute des routes dans routes/web.php pour accéder aux contrôleurs.

// routes/web.php
Route::resource('tasks', 'TaskController');

Étape 7 : Créer la vue

On crée une vue pour afficher la liste des tâches.

## Créer les vues dans resources/views/tasks
touch resources/views/tasks/index.blade.php

Étape 8 : Tester l'application

On accède à notre application à partir de http://localhost:8000/tasks dans le navigateur pour vérifier que tout fonctionne correctement.

Erreurs frequentes et debugging

Erreur 1 : Connexion MySQL échoue

## Mauvais
$ docker-compose exec app php artisan migrate

## Correct
$ docker-compose exec db mysql -uroot -proot laravel

Erreur 2 : Composer install failed

## Mauvais
$ composer install

## Correct
$ rm -rf vendor
$ composer install

Pour aller plus loin

  1. Utiliser Docker Secrets pour gérer les mots de passe : En utilisant Docker Secrets, on peut stocker des informations sensibles comme les mots de passe en dehors du fichier docker-compose.yml.

  2. Ajouter des logs personnalisés : Ajouter des scripts pour suivre les journaux de vos applications pour une meilleure visibilité.

  3. Utiliser Docker Swarm pour la gestion de clusters : Docker Swarm permet de gérer et d'échelonner facilement des applications à grande échelle.

Défi pratique

Créez un petit projet Laravel qui utilise le package GuzzleHttp pour faire des requêtes HTTP vers une API externe. Configurez le projet avec Docker Compose pour que tout fonctionne correctement en local.

Besoin d'aide sur Laravel ?

Besoin d'aide sur un projet technique ? Decrivez-le pour des conseils personnalises.

Recevoir des conseils

Questions frequentes

Comment installer Docker Compose sur mon ordinateur ?
Pour installer Docker Compose, téléchargez le fichier binaire approprié pour votre système d'exploitation depuis le site officiel de Docker (). Suivez ensuite les instructions fournies pour l'installation.
Quelle est la configuration Docker Compose pour un projet Laravel + MySQL ?
La configuration Docker Compose pour un projet Laravel + MySQL implique de définir deux services : un pour Laravel et un pour MySQL. Vous devrez créer un fichier docker-compose.yml qui spécifie les images Docker appropriées, les volumes persistants, et les ports d'écoute.
Comment démarrer mon application Laravel avec Docker Compose ?
Pour démarrer votre application Laravel avec Docker Compose, assurez-vous que Docker et Docker Compose sont correctement installés sur votre système. Naviguez vers le répertoire contenant votre fichier docker-compose.yml et exécutez la commande `docker-compose up`. Cela lancera les conteneurs spécifiés dans votre configuration.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.