Aller au contenu

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.

Niveau Débutant4 min de lecture— vuesDocker

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

Environnement et versions

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

ARCHITECTURE TECHNIQUEComprendre la chaîne de bout en bout
01index.html
02Dockerfile
03docker build
04Image locale
05Conteneur HTTP
Une image est construite une fois puis instanciée en conteneur. Le mapping 127.0.0.1:8080:80 limite l'accès au poste de recette.

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.

01

ÉTAPE 1 / 5

Préparer les fichiers du projet

Un contexte de build minimal évite d'incorporer des documents et secrets inutiles.

  1. Créer un dossier docker-site et y ajouter une page HTML de test.
  2. Éviter de copier les fichiers .env, .git ou secrets dans l'image ; prévoir .dockerignore.
  3. Exécuter la construction uniquement depuis ce dossier.
Exemple techniqueÀ adapter à votre environnement
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
Ce qui se passe à cette étape
1index.html
2Préparer les fichiers du projet
3Conteneur HTTP

À 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.

02

ÉTAPE 2 / 5

Écrire le Dockerfile

L'image de base transporte déjà Nginx, ce qui évite une installation manuelle répétée.

  1. Créer Dockerfile à la racine.
  2. Copier seulement index.html dans l'emplacement servi par Nginx.
  3. Contrôler l'origine de l'image de base et, en production, fixer son digest.
Exemple techniqueÀ adapter à votre environnement
FROM nginx:stable-alpine
COPY index.html /usr/share/nginx/html/index.html
EXPOSE 80
Ce qui se passe à cette étape
1index.html
2Écrire le Dockerfile
3Conteneur HTTP

À 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.

03

ÉTAPE 3 / 5

Construire et inspecter l'image

Une construction réussie n'est pas encore un test de fonctionnement HTTP.

  1. Construire sous un nom/version de recette.
  2. Examiner la taille et les métadonnées de l'image.
  3. Si la construction échoue, relire le contexte et le chemin du fichier.
Exemple techniqueÀ adapter à votre environnement
docker build -t adn-docker-site:lab .
docker image ls adn-docker-site
docker image inspect adn-docker-site:lab --format '{{.Id}}'
Ce qui se passe à cette étape
1index.html
2Construire et inspecter l'image
3Conteneur HTTP

À 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.

04

ÉTAPE 4 / 5

Démarrer puis vérifier HTTP

Un conteneur démarré peut néanmoins ne pas répondre sur le bon port.

  1. Démarrer un seul conteneur et publier uniquement sur loopback.
  2. Faire une requête HTTP depuis la machine locale.
  3. Afficher journaux et état avant de conclure.
Exemple techniqueÀ adapter à votre environnement
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
Ce qui se passe à cette étape
1index.html
2Démarrer puis vérifier HTTP
3Conteneur HTTP

À 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.

05

ÉTAPE 5 / 5

Nettoyer et préparer une livraison

La recette ne doit pas laisser de conteneur en service.

  1. Arrêter le conteneur de test.
  2. Conserver l'image uniquement si une autre recette l'utilise.
  3. Pour la production : contrôler utilisateurs, ressources, dépendances et scan de vulnérabilités.
Exemple techniqueÀ adapter à votre environnement
docker stop adn-site-lab
docker image rm adn-docker-site:lab
Ce qui se passe à cette étape
1index.html
2Nettoyer et préparer une livraison
3Conteneur HTTP

À 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.

Documentation officielle de référence

05 · RECETTE

Comment vérifier que tout fonctionne ?

Résultat attenduContrôles avant de considérer la procédure terminée
01

Dockerfile et .dockerignore existent, aucun secret dans le contexte.

02

docker build réussit et le tag local est visible.

03

curl sur 127.0.0.1:8080 retourne la page attendue.

04

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.

Tous les guides Docker

Pour aller plus loin