Hopp til innhold

Docker comme automatisation

Skip to content

Ceci est un texte traduit automatiquement qui peut contenir des erreurs !

Avec Compose, vous décrivez la configuration souhaitée dans un fichier et laissez Docker créer les conteneurs. Ici, vous commencez par une passerelle web Nginx à partir d’une image prête à l’emploi. Ensuite, vous pouvez ajouter un service et examiner ce qui est créé automatiquement.

Avant de commencer : le moteur Docker et Compose issus de [[Docker Level 1 - Démarrage rapide|Docker Level 1]] doivent fonctionner. Exécutez docker compose version sur la machine virtuelle Linux. Vous n’avez pas besoin d’une application Flask, d’un Dockerfile ou d’un compte GitHub. [[Git dans le terminal Niveau 3 - YAML|Référence YAML]] fournit des informations sur l’alphabetisation et les listes ; vous pouvez le lire sans avoir créé de workflow GitHub.

Commencez par effectuer « Tâche 1 » et vérifiez la réponse du site Web. La mise à jour est une référence pour un travail ultérieur. « Tâche 2 » vous permet d’essayer plusieurs services dans le même projet.

Qu’est-ce que Docker Compose ?

Avec Docker Compose, vous décrivez un ou plusieurs services dans un fichier. Dans cet exercice, chaque service exécute un conteneur. Ici, le fichier utilisé est docker-compose.yml.

compose.yaml et docker-compose.yml sont des noms pris en charge par Compose. Utilisez l’un d’entre eux dans votre dossier de projet et lancez les commandes depuis ce dossier. Ici, le fichier utilisé est docker-compose.yml.

services:
  web:
    image: nginx:latest
    ports:
      - "127.0.0.1:8083:80"

Une commande configure tout :

docker compose up -d
# Starter tjenestene i bakgrunnen.
# Démarre les services en arrière-plan.

Le fichier Compose peut être utilisé sur un autre serveur, mais vous devez également déplacer les données nécessaires et les fichiers locaux, ainsi que configurer les mots de passe, le réseau et d’autres paramètres. Les tags tels que latest peuvent pointer vers une nouvelle image ultérieurement. Pour que les builds soient identiques, vous devez également verrouiller l’image utilisée.

Pourquoi est-ce une automatisation ?

Pensez à la différence :

Configuration manuelle Avec Docker Compose
Installez Nginx manuellement image: nginx:latest
Configurez les ports ports: "80:80"
Installez Grafana manuellement image: grafana/grafana:latest
Documentez toutes les étapes Décrivez le configuration souhaitée dans le fichier Compose
Répétez tout sur le serveur suivant docker compose up -d

Le fichier Compose fait partie de la documentation technique et décrit la configuration souhaitée. Vérifiez l’état réel avec docker compose ps et les journaux (logs). Les justifications, les résultats des tests et les procédures de sauvegarde doivent être documentés en plus.

Lire l’exemple simple

services regroupe les services. web est le nom que nous donnons au serveur Web. image sélectionne une image prête à l’emploi, tandis que ports associe le port 8083 sur l’adresse de rebouclage de la machine virtuelle au port 80 dans le conteneur. Par conséquent, vous testez depuis la machine virtuelle elle-même. La construction à partir du code source sera abordée dans Docker Level 2.

Commandes Docker utiles

Commande Ce qu’elle fait
docker compose up -d Démarre tous les services en arrière-plan
docker compose down Arrête et supprime les conteneurs et le réseau du projet
docker compose logs -f Suit les journaux en temps réel
docker compose pull Récupère les images auxquelles pointent les étiquettes (tags) du projet
docker compose restart Redémarre les conteneurs du projet sans changer l’image
docker ps Affiche les conteneurs en cours d’exécution

Quand le service a besoin de stockage

Conserver les données hors conteneur explique le montage de répertoires et les volumes nommés. L’exercice Nginx ci-dessous n’a pas besoin de base de données ni de liaison de stockage. Utilisez la prise en charge du stockage avant d’étendre le projet avec un service qui doit conserver des données.

Mise à jour des services

Mettre à jour un service Docker est simple :

# Récupérer la dernière version
docker compose pull

# Redémarrer avec la nouvelle version
docker compose up -d

up -d utilise la nouvelle image en recréant le conteneur. Vérifiez que le service fonctionne après la mise à jour ; une nouvelle version d’image peut nécessiter des modifications de configuration ou de données.

Facile Exercice 1 - Configurer Nginx avec Docker Compose

Travaillez dans la console de la machine virtuelle. Créez un nouveau dossier afin que cet exercice ne modifie pas un autre projet Compose :

# Étape 1 : Créer le répertoire de travail
mkdir compose-ovelse
# Étape 2 : Se déplacer dans le répertoire
cd compose-ovelse
# Étape 3 : Éditer le fichier de configuration Docker Compose
nano docker-compose.yml

Si le dossier existe déjà, ouvrez-le et vérifiez son contenu avant de continuer. Écrivez l’exemple Nginx de la section « Qu’est-ce que Docker Compose ? » dans le fichier. Enregistrez avec Ctrl+O, confirmez avec Entrée et quittez avec Ctrl+X. Vérifiez et démarrez :

docker compose config --quiet
docker compose up -d
docker compose ps
curl http://127.0.0.1:8083

config --quiet doit se terminer sans message d’erreur. Si vous corrigez une erreur dans le fichier, exécutez à nouveau la vérification avant le démarrage. ps doit afficher web comme étant actif, et curl doit afficher le contenu de Nginx avec Welcome to nginx !.

Si le port est occupé, choisissez un autre port hôte disponible dans le fichier et utilisez le même port dans curl. Si le conteneur s’arrête, lisez docker compose logs web. Ne lancez pas un nouveau projet dans un dossier aléatoire pour réessayer.

Expliquez avant de continuer : Quel fichier décrit le service et qu’a créé docker compose up -d ? Arrêtez le projet avec docker compose stop, redémarrez-le avec docker compose up -d et répétez le test curl. Si vous avez utilisé cette page comme support Compose pour une autre tâche, vous pouvez y revenir maintenant.

Medium Exercice 2 - Ajouter un service

Étendez le fichier docker-compose.yml de l’exercice 1 avec un service supplémentaire. Par exemple :

Utilisez un nom de service distinct sous services, au même niveau d’indentation que web. Consultez l’exemple Docker officiel du service pour obtenir la version d’image (image), le port et le stockage nécessaires. Utilisez un port hôte libre et restreignez l’accès à l’environnement d’exercice. Une étiquette latest ne représente pas une version verrouillée.

Exécutez d’abord docker compose config --quiet. Puis démarrez avec docker compose up -d et vérifiez que les deux services fonctionnent simultanément. Si vous utilisez un bind mount comme pour Nginx, testez le port depuis la machine virtuelle ; l’accès depuis une autre machine nécessite une clarification indépendante concernant l’adresse, le port et le réseau.

Affichez docker compose ps ainsi qu’une réponse attendue de chaque service sur l’adresse et le port effectivement configurés. Expliquez oralement ou par écrit ce que Compose crée automatiquement et ce qui reste à votre charge, par exemple les données, les configurations et les sauvegardes. Si un service s’arrête, consultez docker compose logs avant de modifier la configuration. Terminez tout suivi des journaux avec Ctrl+C.

Résumé

  • Docker Compose vous permet de définir plusieurs services dans un seul fichier
  • Le fichier Compose est à la fois une configuration et une documentation
  • La mise à jour se fait avec docker compose pull + docker compose up -d
  • Docker facilite le déplacement des services entre les serveurs

Sources : Docker Compose : premier projet et Services Compose.