Pierry Lim

Introduction à Docker pour développeurs web

· Mis à jour le 17 janvier 2026 · 10 min de lecture
Docker
Développement
DevOps
Conteneurisation

Guide complet pour débuter avec Docker : concepts de base, installation, premiers conteneurs et exemples pratiques pour développeurs web. Parfait pour démystifier la containerisation.

Introduction à Docker pour développeurs web

Sommaire

Introduction

Docker est devenu incontournable dans le développement moderne, mais beaucoup de développeurs web hésitent encore à s’y mettre. Si vous faites partie de ceux qui trouvent Docker intimidant ou complexe, ce guide est fait pour vous !

Nous allons voir ensemble ce qu’est Docker, pourquoi il est si utile, et comment vous pouvez commencer à l’utiliser dés aujourd’hui avec des exemples concrets et simples.

Qu’est-ce que Docker ?

Les concepts de base

Imaginez que vous voulez partager votre application avec un collégue. Sans Docker, vous devez lui donner :

  • Le code source
  • La liste des dépendances
  • Les instructions d’installation
  • La version exacte de Node.js/Python/PHP à installer
  • Les variables d’environnement
  • Et croiser les doigts pour que éa marche sur sa machine !

Docker résout ce problème en “empaquetant” votre application avec tout ce dont elle a besoin dans un conteneur.

Un conteneur, c’est comme une boéte qui contient :

  • Votre code
  • Le runtime (Node.js, Python…)
  • Les dépendances
  • Les variables d’environnement
  • Méme l’OS minimal nécessaire

Pourquoi utiliser Docker ?

“Ça marche sur ma machine” devient “Ça marche partout”

  • Même environnement en développement, test et production

Isolation complète

  • Chaque projet dans son propre conteneur
  • Fini les conflits de versions

Déploiement simplifié

  • Un seul fichier à déployer
  • Rollback instantané possible

Développement d’équipe facilité

  • Nouveau développeur opérationnel en minutes
  • Environnement identique pour toute l’équipe

Installation de Docker

Sur Windows

  1. Téléchargez Docker Desktop depuis docker.com
  2. Installez avec les paramétres par défaut
  3. Redémarrez votre machine
  4. Vérifiez l’installation :
docker --version

Sur macOS

  1. Téléchargez Docker Desktop depuis docker.com
  2. Glissez l’application dans le dossier Applications
  3. Lancez Docker Desktop
  4. Vérifiez l’installation :
docker --version

Sur Linux

# Ubuntu/Debian
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# Ajouter votre utilisateur au groupe docker
sudo usermod -aG docker $USER

# Redémarrer la session ou faire :
newgrp docker

# Vérifier l'installation
docker --version

Vos premiers pas avec Docker

Votre premier conteneur

Commenéons par le classique “Hello World” :

docker run hello-world

Cette commande :

  1. Télécharge l’image hello-world si elle n’existe pas
  2. Crée un conteneur à partir de cette image
  3. Exécute le conteneur
  4. Affiche un message de bienvenue

Testons avec quelque chose de plus concret :

# Lancer un serveur web Nginx
docker run -d -p 8080:80 nginx

# -d : en arriére-plan (détaché)
# -p 8080:80 : redirige le port 8080 de votre machine vers le port 80 du conteneur

Ouvrez http://localhost:8080 dans votre navigateur. Vous voyez la page d’accueil Nginx !

Les commandes essentielles

# Lister les conteneurs actifs
docker ps

# Lister tous les conteneurs (actifs + arrétés)
docker ps -a

# Arréter un conteneur
docker stop nom_ou_id_du_conteneur

# Supprimer un conteneur
docker rm nom_ou_id_du_conteneur

# Lister les images téléchargées
docker images

# Supprimer une image
docker rmi nom_de_l_image

# Voir les logs d'un conteneur
docker logs nom_ou_id_du_conteneur

Containeriser une application web

Exemple avec Node.js

Créons une application Node.js simple et containerisons-la.

1. Créez l’application :

package.json :

{
  "name": "mon-app-docker",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "express": "^4.18.0"
  }
}

server.js :

const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;

app.get('/', (req, res) => {
  res.json({ 
    message: 'Hello from Docker!',
    timestamp: new Date().toISOString()
  });
});

app.listen(PORT, () => {
  console.log(`Server running on port ${PORT}`);
});

2. Créez le Dockerfile :

# Utiliser l'image officielle Node.js
FROM node:18-alpine

# Définir le répertoire de travail
WORKDIR /app

# Copier les fichiers de dépendances
COPY package*.json ./

# Installer les dépendances
RUN npm install

# Copier le code source
COPY . .

# Exposer le port
EXPOSE 3000

# Commande de démarrage
CMD ["npm", "start"]

3. Construire et lancer :

# Construire l'image
docker build -t mon-app-node .

# Lancer le conteneur
docker run -d -p 3000:3000 --name mon-app mon-app-node

# Tester
curl http://localhost:3000

Exemple avec Python/Flask

1. L’application Flask :

app.py :

from flask import Flask, jsonify
from datetime import datetime

app = Flask(__name__)

@app.route('/')
def hello():
    return jsonify({
        'message': 'Hello from Docker with Python!',
        'timestamp': datetime.now().isoformat()
    })

if __name__ == '__main__':
    app.run(host='0.0.0.0', port🔄000, debug=True)

requirements.txt :

Flask==2.3.3

2. Le Dockerfile :

FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD ["python", "app.py"]

3. Construction et lancement :

docker build -t mon-app-python .
docker run -d -p 5000:5000 --name mon-app-flask mon-app-python

Docker Compose pour les applications multi-services

Pour une vraie application, vous avez souvent besoin de plusieurs services : votre app, une base de données, un cache Redis, etc.

Docker Compose permet de gérer plusieurs conteneurs facilement.

docker-compose.yml :

version: '3.8'

services:
  web:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=development
      - DB_HOST=db
    depends_on:
      - db
      - redis

  db:
    image: postgres:15
    environment:
      - POSTGRES_DB=myapp
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=password
    volumes:
      - postgres_data:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine

volumes:
  postgres_data:

Commandes Docker Compose :

# Lancer tous les services
docker-compose up -d

# Voir les logs
docker-compose logs

# Arréter tous les services
docker-compose down

# Reconstruire et relancer
docker-compose up --build

Bonnes pratiques

Dockerfile optimisé

FROM node:18-alpine

# Créer un utilisateur non-root
RUN addgroup -g 1001 -S nodejs
RUN adduser -S nextjs -u 1001

WORKDIR /app

# Copier les fichiers de dépendances en premier (pour le cache)
COPY package*.json ./
RUN npm ci --only=production && npm cache clean --force

# Copier le code source
COPY . .

# Changer le propriétaire des fichiers
RUN chown -R nextjs:nodejs /app
USER nextjs

EXPOSE 3000

CMD ["npm", "start"]

.dockerignore

Créez un .dockerignore pour exclure les fichiers inutiles :

node_modules
npm-debug.log
.git
.gitignore
README.md
.env
.nyc_output
coverage
.vscode

Variables d’environnement

# Utiliser un fichier .env
docker run --env-file .env mon-app

# Ou passer des variables individuelles
docker run -e NODE_ENV=production -e PORT=3000 mon-app

Volumes pour la persistance

# Monter un volume pour les données
docker run -v /chemin/local:/app/data mon-app

# Volume nommé (recommandé)
docker run -v mon-volume:/app/data mon-app

FAQ

Docker vs Machine Virtuelle, quelle différence ?

Machine Virtuelle :

  • Inclut un OS complet
  • Plus lourde (plusieurs GB)
  • Plus lente à démarrer

Docker :

  • Partage l’OS de l’héte
  • Plus léger (quelques MB à GB)
  • Démarrage quasi-instantané

Où sont stockés mes conteneurs et images ?

Sur Linux : /var/lib/docker/ Sur Windows/Mac : Dans la VM de Docker Desktop

Comment debugger dans un conteneur ?

# Se connecter au conteneur en cours d'exécution
docker exec -it nom_conteneur sh

# Ou bash si disponible
docker exec -it nom_conteneur bash

Mes données disparaissent quand je supprime le conteneur !

Normal ! Utilisez des volumes :

docker run -v /chemin/local:/app/data mon-app

Comment mettre à jour mon application ?

  1. Reconstruisez l’image : docker build -t mon-app:v2 .
  2. Arrêtez l’ancien conteneur : docker stop mon-app
  3. Lancez le nouveau : docker run -d --name mon-app-v2 mon-app:v2

Docker est-il sécurisé ?

Les bonnes pratiques incluent :

  • Ne pas exécuter en tant que root dans le conteneur
  • Scanner les images pour les vulnérabilités
  • Utiliser des images officielles ou de confiance
  • Maintenir Docker à jour

Docker simplifie énormément le déploiement et le développement. Commencez par containeriser une petite application, et vous verrez rapidement les bénéfices !

Travaillons ensemble

Vous cherchez un développeur freelance pour créer un site web ou une application sur mesure ? Contactez-moi pour discuter de votre projet et obtenir un devis personnalisé.