GUIDE TECHNIQUE · DOCKER
Déployer une application avec Docker Compose
Créer une petite plateforme locale PostgreSQL + Adminer avec Docker Compose, attendre la disponibilité de la base, accéder à l'interface uniquement en local et préserver les données dans un volume nommé.
L’ESSENTIEL EN BREF
Comment procéder ?
Créer une petite plateforme locale PostgreSQL + Adminer avec Docker Compose, attendre la disponibilité de la base, accéder à l'interface uniquement en local et préserver les données dans un volume nommé.
Résultat à atteindre : docker compose config --quiet ne signale pas d'erreur.
Avant de commencer : Docker Engine et plugin Compose fonctionnels ; commande docker compose version disponible.
01 · CADRAGE
Ce que vous allez mettre en place
Créer une petite plateforme locale PostgreSQL + Adminer avec Docker Compose, attendre la disponibilité de la base, accéder à l'interface uniquement en local et préserver les données dans un volume nommé.
Pour qui : Développeurs back-end et équipes DevOps travaillant sur des environnements de recette
Docker Compose v2 (commande docker compose), PostgreSQL 16 et Adminer 4 pour illustration ; contrôler les correctifs de sécurité des images utilisées.
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
- Docker Engine et plugin Compose fonctionnels ; commande docker compose version disponible.
- Ports 127.0.0.1:8080 libres ; ressources pour deux services.
- Mot de passe de recette non sensible, jamais réemployé en production.
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
Définir le périmètre et les images
Deux services suffisent pour montrer DNS interne, réseau privé et persistance.
- Créer un dossier compose-lab.
- Définir un mot de passe fictif uniquement pour l'environnement local.
- Vérifier que le port 8080 n'est pas déjà utilisé.
mkdir -p compose-lab && cd compose-lab
docker compose versionÀ vérifier : Docker Compose répond avec sa version.
Point de vigilance ADN : Cet exemple ne comporte pas de TLS ni de politique d'accès destinée à une exposition Internet.
ÉTAPE 2 / 5
Créer compose.yaml
depends_on avec service_healthy attend que le service de base signale sa disponibilité.
- Créer compose.yaml avec la configuration ci-dessous.
- Laisser le port 5432 fermé à l'hôte ; exposer uniquement Adminer sur localhost.
- Garder le volume pgdata entre deux démarrages de recette.
services:
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: demo
POSTGRES_PASSWORD: exemple-local-uniquement
POSTGRES_DB: demo
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U demo -d demo"]
interval: 5s
timeout: 3s
retries: 10
adminer:
image: adminer:4
depends_on:
db:
condition: service_healthy
ports:
- "127.0.0.1:8080:8080"
volumes:
pgdata:À vérifier : Le YAML décrit deux services, un réseau Compose privé et un volume persistant.
Point de vigilance ADN : Les mots de passe en clair sont tolérés uniquement dans cet exemple local ; en RUN utiliser gestion des secrets.
ÉTAPE 3 / 5
Démarrer et lire les états
La présence du conteneur n'est pas suffisante : la base doit être prête.
- Valider la syntaxe et les interpolations.
- Démarrer les conteneurs en tâche de fond.
- Vérifier que db devient healthy et qu'Adminer fonctionne.
docker compose config --quiet
docker compose up -d
docker compose ps
docker compose logs --tail=30 dbÀ vérifier : db remonte healthy puis Adminer répond sur http://127.0.0.1:8080.
Point de vigilance ADN : Les journaux peuvent contenir des données sensibles sur d'autres projets ; ici utiliser seulement la base fictive.
ÉTAPE 4 / 5
Tester la communication entre services
Le nom db est résolu sur le réseau de projet, sans publication du port PostgreSQL.
- Ouvrir Adminer sur localhost:8080 et choisir PostgreSQL, serveur db, utilisateur demo et la base demo.
- Exécuter une requête SQL simple depuis le conteneur DB.
- Confirmer que 5432 n'est pas publié sur l'hôte.
docker compose exec db psql -U demo -d demo -c 'SELECT 1;'
docker compose psÀ vérifier : Le SELECT renvoie une ligne avec 1 ; Adminer se connecte au service db.
Point de vigilance ADN : Ne pas utiliser localhost comme adresse PostgreSQL dans Adminer : il désigne le conteneur Adminer.
ÉTAPE 5 / 5
Arrêter sans perdre la base
docker compose down ne détruit pas les volumes nommés par défaut.
- Arrêter et supprimer les conteneurs de recette.
- Redémarrer si nécessaire et vérifier que le volume pgdata est encore présent.
- Supprimer le volume uniquement lors d'une purge volontaire après sauvegarde.
docker compose down
docker volume ls
# Purge DESTRUCTIVE seulement si données de recette jetables :
# docker compose down -vÀ vérifier : Les conteneurs sont arrêtés et le volume reste présent.
Point de vigilance ADN : Ne jamais ajouter -v par habitude : cette option efface les données persistées dans ce projet.
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 ?
docker compose config --quiet ne signale pas d'erreur.
db est healthy et Adminer répond exclusivement sur localhost.
SELECT 1 réussit dans PostgreSQL.
docker compose down conserve le volume par défaut.
06 · DIAGNOSTIC
Problèmes fréquents et résolution
Adminer affiche connection refused
Cause probable : Base non prête ou hôte db erroné
Que faire : Examiner healthcheck et renseigner db comme serveur.
Port 8080 indisponible
Cause probable : Collision avec une autre application
Que faire : Changer le port publié côté hôte.
Données disparues
Cause probable : Volume supprimé avec -v ou nom de projet modifié
Que faire : Contrôler docker volume ls et le nom de projet Compose.
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
Est-il conseillé de publier PostgreSQL sur l'hôte ?
Pas dans cette recette ; tous les échanges inter-services passent par le réseau privé Compose.
Peut-on réutiliser le mot de passe de l'exemple ?
Non. Il est volontairement fictif et public.
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.
