GUIDE TECHNIQUE · DOCKER
Construire une image Docker avec Dockerfile
Construire une image Docker reproductible pour un petit site statique avec un Dockerfile, tester son serveur HTTP et réduire sa surface d'exposition. Exemple pédagogique sur un poste de recette ; ne publiez pas le port sur une interface accessible au public.
L’ESSENTIEL EN BREF
Comment procéder ?
Construire une image Docker reproductible pour un petit site statique avec un Dockerfile, tester son serveur HTTP et réduire sa surface d'exposition. Exemple pédagogique sur un poste de recette ; ne publiez pas le port sur une interface accessible au public.
Résultat à atteindre : Dockerfile et .dockerignore existent, aucun secret dans le contexte.
Avant de commencer : Moteur Docker opérationnel et permission de lancer docker sans utiliser un serveur mutualisé de production.
01 · CADRAGE
Ce que vous allez mettre en place
Construire une image Docker reproductible pour un petit site statique avec un Dockerfile, tester son serveur HTTP et réduire sa surface d'exposition. Exemple pédagogique sur un poste de recette ; ne publiez pas le port sur une interface accessible au public.
Pour qui : Développeurs, administrateurs systèmes, équipes DevOps débutantes
Docker Engine avec plugin Buildx récent ; image nginx:stable-alpine en laboratoire. Pour les environnements maîtrisés, épingler l'image de base par digest après validation.
Vérifiez la compatibilité avec votre environnement réel. Les versions ne sont jamais présumées identiques d’un tenant à l’autre.
02 · AVANT DE COMMENCER
Prérequis et points de contrôle
- Moteur Docker opérationnel et permission de lancer docker sans utiliser un serveur mutualisé de production.
- Répertoire de travail dédié et ports 8080 disponibles sur le poste.
- Accès contrôlé à Docker Hub ou à un registre de confiance.
03 · VUE D’ENSEMBLE
Comprendre l’architecture et les flux
04 · TUTORIEL
Procédure complète, étape par étape
Chaque étape explique l’action, sa raison, le contrôle attendu et les erreurs habituelles. Adaptez les exemples aux paramètres de votre propre environnement.
ÉTAPE 1 / 5
Préparer les fichiers du projet
Un contexte de build minimal évite d'incorporer des documents et secrets inutiles.
- Créer un dossier docker-site et y ajouter une page HTML de test.
- Éviter de copier les fichiers .env, .git ou secrets dans l'image ; prévoir .dockerignore.
- Exécuter la construction uniquement depuis ce dossier.
mkdir -p docker-site && cd docker-site
printf '<h1>Guide Docker ADN - recette</h1>\n' > index.html
printf '.git\n.env\n*.pem\n' > .dockerignoreÀ vérifier : Le répertoire contient une page de test et les exclusions de build.
Point de vigilance ADN : Le contenu HTML n'est pas une application métier ; les exclusions sont à adapter au dépôt réel.
ÉTAPE 2 / 5
Écrire le Dockerfile
L'image de base transporte déjà Nginx, ce qui évite une installation manuelle répétée.
- Créer Dockerfile à la racine.
- Copier seulement index.html dans l'emplacement servi par Nginx.
- Contrôler l'origine de l'image de base et, en production, fixer son digest.
FROM nginx:stable-alpine
COPY index.html /usr/share/nginx/html/index.html
EXPOSE 80À vérifier : Le Dockerfile décrit une image statique sans secrets ni téléchargement supplémentaire.
Point de vigilance ADN : EXPOSE documente le port : il ne le publie pas sur l'hôte.
ÉTAPE 3 / 5
Construire et inspecter l'image
Une construction réussie n'est pas encore un test de fonctionnement HTTP.
- Construire sous un nom/version de recette.
- Examiner la taille et les métadonnées de l'image.
- Si la construction échoue, relire le contexte et le chemin du fichier.
docker build -t adn-docker-site:lab .
docker image ls adn-docker-site
docker image inspect adn-docker-site:lab --format '{{.Id}}'À vérifier : Une image adn-docker-site:lab est présente localement.
Point de vigilance ADN : Ne pas interpréter le tag stable-alpine comme une version immuable.
ÉTAPE 4 / 5
Démarrer puis vérifier HTTP
Un conteneur démarré peut néanmoins ne pas répondre sur le bon port.
- Démarrer un seul conteneur et publier uniquement sur loopback.
- Faire une requête HTTP depuis la machine locale.
- Afficher journaux et état avant de conclure.
docker run --rm -d --name adn-site-lab -p 127.0.0.1:8080:80 adn-docker-site:lab
curl -fsS http://127.0.0.1:8080/
docker logs adn-site-lab
docker ps --filter name=adn-site-labÀ vérifier : La réponse HTTP contient Guide Docker ADN - recette.
Point de vigilance ADN : Si 8080 est occupé, choisir un port hôte libre sans changer le port interne 80.
ÉTAPE 5 / 5
Nettoyer et préparer une livraison
La recette ne doit pas laisser de conteneur en service.
- Arrêter le conteneur de test.
- Conserver l'image uniquement si une autre recette l'utilise.
- Pour la production : contrôler utilisateurs, ressources, dépendances et scan de vulnérabilités.
docker stop adn-site-lab
docker image rm adn-docker-site:labÀ vérifier : Le conteneur de recette n'est plus actif ; la suppression de l'image est facultative.
Point de vigilance ADN : La commande image rm échoue si d'autres conteneurs utilisent encore l'image.
SOURCES ET FIABILITÉ
Statut de validation du guide
Rédaction : ADN Consulting. Statut : procédure documentée, exécution en laboratoire non attestée.
Les exemples et versions indiqués doivent être vérifiés sur un environnement autorisé. Aucune validation individuelle par un consultant n’est revendiquée sans preuve.
05 · RECETTE
Comment vérifier que tout fonctionne ?
Dockerfile et .dockerignore existent, aucun secret dans le contexte.
docker build réussit et le tag local est visible.
curl sur 127.0.0.1:8080 retourne la page attendue.
Le conteneur est arrêté en fin de recette.
06 · DIAGNOSTIC
Problèmes fréquents et résolution
Port 8080 déjà attribué
Cause probable : Un autre service écoute localement
Que faire : Choisir un port libre : modifier le port à gauche de -p.
COPY échoue
Cause probable : Fichier index.html absent du contexte
Que faire : Exécuter docker build depuis docker-site ; vérifier .dockerignore.
HTTP 502 ou connexion refusée
Cause probable : Conteneur non démarré ou mapping incorrect
Que faire : Consulter docker ps -a et docker logs ; vérifier le port 80 interne.
Le conseil de l’expert ADN
Avant de généraliser cette configuration, validez-la sur un périmètre représentatif, documentez les critères de réussite et conservez une procédure de retour arrière. Une automatisation fiable se juge sur l’état final observé, les permissions maîtrisées et un retour arrière testé.
07 · QUESTIONS PRATIQUES
Questions fréquentes
Pourquoi ne pas utiliser latest ?
latest n'est pas une promesse de stabilité. Épinglez la version et idéalement un digest pour la production.
Est-ce un déploiement de production ?
Non, c'est une recette locale qui doit être complétée par les politiques de sécurité et de déploiement.
AUTRES TECHNOLOGIES
Guides complémentaires
Ce tutoriel s’inscrit dans une chaîne technique plus large. Retrouvez les méthodes associées aux technologies voisines.
