Docker

Docker est une plateforme permettant de créer, déployer et exécuter des applications dans des conteneurs.

Docker

Prérequis

Git image
Git

Git est un système de contrôle de versio...

Laravel image
Laravel

Laravel est un framework PHP open source...

Prochaine étape

Aucune prochaine étape

Aucune prochaine étape pour cette catégorie.

À propos de Docker

Docker simplifie le développement et le déploiement d’applications en offrant :

  • Isolation complète : chaque conteneur fonctionne indépendamment, sans interférer avec les autres applications ou le système hôte.
  • Portabilité : un conteneur fonctionne de la même manière sur tous les systèmes (Linux, Windows, macOS).
  • Reproductibilité : les environnements de développement et de production sont identiques.
  • Efficacité : les conteneurs partagent le même noyau OS, ce qui les rend plus légers que les machines virtuelles.

Docker est largement utilisé pour les applications web, microservices, bases de données, serveurs API, et même des applications desktop.

Installation

Sur Linux (Debian/Ubuntu) :

1sudo apt update
2sudo apt install docker.io
3sudo systemctl start docker
4sudo systemctl enable docker

Vérification de l’installation :

1docker --version

Installer Docker Compose pour gérer plusieurs conteneurs :

1sudo apt install docker-compose
2docker-compose --version

Concepts clés

  • Image : modèle de conteneur, construit à partir d’un fichier Dockerfile.
  • Conteneur : instance en cours d’exécution d’une image.
  • Dockerfile : fichier de configuration pour créer une image Docker.
  • Docker Hub : registre d’images Docker publiques ou privées.

Exemple de Dockerfile pour une application PHP/Laravel

1# Utiliser l’image PHP officielle avec Apache
2FROM php:8.2-apache
3 
4# Installer les extensions nécessaires
5RUN docker-php-ext-install pdo pdo_mysql
6 
7# Copier le code de l’application
8COPY . /var/www/html
9 
10# Installer Composer
11COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
12 
13# Définir les permissions
14RUN chown -R www-data:www-data /var/www/html
15 
16EXPOSE 80

Exemple de docker-compose.yml

Pour lancer plusieurs services (Laravel + MySQL) :

1version: '3.8'
2 
3services:
4 app:
5 build: .
6 ports:
7 - "8000:80"
8 volumes:
9 - .:/var/www/html
10 depends_on:
11 - db
12 
13 db:
14 image: mysql:8.0
15 environment:
16 MYSQL_ROOT_PASSWORD: secret
17 MYSQL_DATABASE: laravel
18 MYSQL_USER: laravel
19 MYSQL_PASSWORD: secret
20 ports:
21 - "3306:3306"
  • app : conteneur pour l’application Laravel.
  • db : conteneur MySQL.
  • volumes : synchronisation du code local avec le conteneur.
  • depends_on : garantit que le conteneur db est démarré avant app.

Commandes Docker utiles

  • Lister les conteneurs actifs :
1docker ps
  • Lancer un conteneur :
1docker run -it --name mon_app php:8.2 bash
  • Arrêter un conteneur :
1docker stop mon_app
  • Supprimer un conteneur :
1docker rm mon_app
  • Construire une image à partir d’un Dockerfile :
1docker build -t mon_image .
  • Lancer les services définis dans docker-compose.yml :
1docker-compose up -d

Bonnes pratiques

  • Séparer les services en conteneurs distincts (app, base de données, cache, queue, etc.).
  • Utiliser volumes pour conserver les données persistantes.
  • Construire des images légères et sécurisées.
  • Automatiser les builds et déploiements avec CI/CD.
  • Versionner le Dockerfile et le docker-compose.yml avec le code source.

Docker est un outil incontournable pour le développement moderne, permettant de créer des environnements isolés, reproductibles et portables pour toutes les applications. Il facilite le travail en équipe et simplifie le déploiement sur différents environnements, du développement local à la production.