Docker - 6.4 Exercice : créer un fichier Docker Compose

Cet exercice vous fait créer un fichier Docker Compose à partir de zéro. Vous y définissez deux services : Drupal, un système de gestion de contenu, et sa base de données PostgreSQL. Compose rend les commandes Docker plus simples à mémoriser.

Les deux services

Le fichier commence par la version 2 de Compose. Il contient deux services : un pour Drupal, et un pour PostgreSQL.

Recherchez les images officielles de Drupal et de PostgreSQL sur Docker Hub, et lisez leur documentation. Vous pouvez nommer vos services comme vous le souhaitez.

Ports, mot de passe et réseau

Exposez Drupal sur le port 80. Le port de PostgreSQL n'a pas besoin d'être exposé, car les services communiquent dans le réseau Docker.

Définissez un mot de passe pour le service PostgreSQL, en suivant la documentation de son image.

Lors de la configuration de Drupal, n'indiquez pas localhost comme serveur de base de données. Indiquez le nom du service PostgreSQL, car Compose utilise le nom du service comme nom DNS.

Lancer et configurer

Démarrez la stack avec la commande suivante, puis ouvrez le navigateur pour suivre l'assistant de configuration de Drupal.

docker compose up

Aller plus loin

Un point supplémentaire est possible avec des volumes, pour conserver les données comme les modèles, les téléchargements et les modules Drupal. La documentation de l'image sur Docker Hub explique comment faire.

L'exercice doit tenir dans un fichier d'une dizaine de lignes.

En résumé

Un fichier Compose décrit plusieurs services et leurs liens. Drupal et PostgreSQL communiquent par le réseau Docker, en utilisant le nom du service. Les volumes conservent les données entre deux lancements.

Points clés

  • Un fichier Compose décrit plusieurs services dans un seul fichier.
  • Utilisez les images officielles de Drupal et de PostgreSQL.
  • Exposez seulement le port 80 de Drupal.
  • Le nom du service sert d'adresse entre conteneurs.
  • Les volumes conservent les données en dehors du conteneur.

Questions fréquentes

Pourquoi ne pas indiquer localhost comme serveur de base de données ?

Localhost désigne le conteneur Drupal lui-même. La base de données tourne dans un autre conteneur, il faut donc indiquer le nom du service PostgreSQL.

Faut-il exposer le port de PostgreSQL ?

Non, sauf besoin précis. Les deux services sont sur le même réseau Docker et communiquent sans port publié.

À quoi servent les volumes ?

Ils conservent des données, comme les modèles, les téléchargements et les modules Drupal, même si le conteneur est recréé.