DOCKER - 3 12 Exercice Tests dans conteneur
L'un des grands avantages de Docker est de fournir un environnement isolé et identique à chaque exécution. C'est idéal pour lancer des tests : la version du langage, des dépendances et de l'OS est figée dans l'image, ce qui évite le classique « ça marche sur ma machine ». Cet exercice consiste à exécuter une suite de tests à l'intérieur d'un conteneur.
Le principe
Deux approches sont possibles. La première consiste à démarrer un conteneur à partir d'une image contenant le runtime voulu, à monter le code source dedans, puis à lancer la commande de test. La seconde consiste à utiliser un conteneur déjà en cours d'exécution et à y exécuter les tests avec docker exec.
Pour lancer un test ponctuel dans un conteneur jetable, on combine docker run avec le montage du répertoire courant et la commande de test :
# Exemple avec un projet Node.js
docker run --rm -v ${PWD}:/app -w /app node:18 npm test
# Exemple avec un projet Python
docker run --rm -v ${PWD}:/app -w /app python:3.11 pytest
L'option --rm supprime automatiquement le conteneur à la fin, -v monte le code dans le conteneur et -w définit le répertoire de travail.
Tester dans un conteneur déjà actif
Si un conteneur tourne déjà (par exemple un serveur applicatif), on peut y exécuter les tests sans le redémarrer :
docker exec -it mon-conteneur npm test
Le code de sortie de la commande de test est propagé : si les tests échouent, la commande docker renvoie un code différent de zéro. C'est exactement ce comportement qui permet d'intégrer ces tests dans un pipeline d'intégration continue, où une étape échouée fait échouer tout le pipeline. À vous de mettre cet exercice en pratique avec votre propre projet avant de comparer avec la solution proposée dans la leçon suivante.
En résumé
Cet exercice Docker pratique vous permet de tester une même commande (curl) dans deux distributions Linux différentes (CentOS 7 et Ubuntu 14.04) en utilisant des conteneurs, démontrant l'agilité de Docker. Au lieu de configurer des machines virtuelles ou des environnements physiques, vous lancez rapidement des conteneurs interactifs pour vérifier les différentes versions des logiciels. L'objectif est de comprendre comment Docker facilite le test et la comparaison de configurations logicielles sur diverses distributions Linux.
Points clés
- Utiliser l'option -it avec docker run pour obtenir un shell interactif (bash) dans un conteneur
- Employer l'option --rm pour nettoyer automatiquement le conteneur après sa fermeture
- Mettre à jour chaque distribution (apt-get update pour Ubuntu, yum update pour CentOS) avant de tester les logiciels installés
- Comparer les versions de curl entre deux distributions Linux différentes exécutées en conteneurs
- Apprécier la rapidité et la facilité de Docker par rapport aux machines virtuelles pour tester différentes configurations
Questions fréquentes
Comment lancer un shell interactif dans un conteneur Docker?
Utilisez la commande docker run -it [image] bash. L'option -it combine -i (interactif) et -t (terminal) pour obtenir un shell bash où vous pouvez exécuter des commandes.
Quel est l'avantage d'utiliser l'option --rm avec docker run?
L'option --rm supprime automatiquement le conteneur après sa fermeture, vous permettant de gagner du temps en nettoyage et en espace disque, idéal pour les tests temporaires.
Pourquoi faut-il mettre à jour les distributions avant de vérifier les logiciels?
Mettre à jour la distribution (apt-get update sur Ubuntu ou yum update sur CentOS) vous assure d'avoir accès aux dépôts logiciels à jour et de pouvoir installer ou vérifier correctement les logiciels comme curl.