Aller au contenu

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

Niveau Intermédiaire4 min de lecture— vuesDocker

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

Environnement et versions

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

ARCHITECTURE TECHNIQUEComprendre la chaîne de bout en bout
01compose.yaml
02Réseau Compose
03PostgreSQL
04Adminer local
05Volume de données
Compose crée son réseau isolé et le volume nommé. Adminer utilise le nom de service db ; seul son port web de recette est exposé sur la boucle locale.

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

Définir le périmètre et les images

Deux services suffisent pour montrer DNS interne, réseau privé et persistance.

  1. Créer un dossier compose-lab.
  2. Définir un mot de passe fictif uniquement pour l'environnement local.
  3. Vérifier que le port 8080 n'est pas déjà utilisé.
Exemple techniqueÀ adapter à votre environnement
mkdir -p compose-lab && cd compose-lab
docker compose version
Ce qui se passe à cette étape
1compose.yaml
2Définir le périmètre et les images
3Volume de données

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

02

ÉTAPE 2 / 5

Créer compose.yaml

depends_on avec service_healthy attend que le service de base signale sa disponibilité.

  1. Créer compose.yaml avec la configuration ci-dessous.
  2. Laisser le port 5432 fermé à l'hôte ; exposer uniquement Adminer sur localhost.
  3. Garder le volume pgdata entre deux démarrages de recette.
Exemple techniqueÀ adapter à votre environnement
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:
Ce qui se passe à cette étape
1compose.yaml
2Créer compose.yaml
3Volume de données

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

03

ÉTAPE 3 / 5

Démarrer et lire les états

La présence du conteneur n'est pas suffisante : la base doit être prête.

  1. Valider la syntaxe et les interpolations.
  2. Démarrer les conteneurs en tâche de fond.
  3. Vérifier que db devient healthy et qu'Adminer fonctionne.
Exemple techniqueÀ adapter à votre environnement
docker compose config --quiet
docker compose up -d
docker compose ps
docker compose logs --tail=30 db
Ce qui se passe à cette étape
1compose.yaml
2Démarrer et lire les états
3Volume de données

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

04

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

  1. Ouvrir Adminer sur localhost:8080 et choisir PostgreSQL, serveur db, utilisateur demo et la base demo.
  2. Exécuter une requête SQL simple depuis le conteneur DB.
  3. Confirmer que 5432 n'est pas publié sur l'hôte.
Exemple techniqueÀ adapter à votre environnement
docker compose exec db psql -U demo -d demo -c 'SELECT 1;'
docker compose ps
Ce qui se passe à cette étape
1compose.yaml
2Tester la communication entre services
3Volume de données

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

05

ÉTAPE 5 / 5

Arrêter sans perdre la base

docker compose down ne détruit pas les volumes nommés par défaut.

  1. Arrêter et supprimer les conteneurs de recette.
  2. Redémarrer si nécessaire et vérifier que le volume pgdata est encore présent.
  3. Supprimer le volume uniquement lors d'une purge volontaire après sauvegarde.
Exemple techniqueÀ adapter à votre environnement
docker compose down
docker volume ls
# Purge DESTRUCTIVE seulement si données de recette jetables :
# docker compose down -v
Ce qui se passe à cette étape
1compose.yaml
2Arrêter sans perdre la base
3Volume de données

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

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

docker compose config --quiet ne signale pas d'erreur.

02

db est healthy et Adminer répond exclusivement sur localhost.

03

SELECT 1 réussit dans PostgreSQL.

04

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.

Tous les guides Docker

Pour aller plus loin