Les Bases de Docker Compose Introduction I - C'est quoi docker Docker Docker est  une plateforme de conteneurs  lancée en 2013 ayant largement contribué à la démocratisation de la conteneurisation. Elle permet de créer facilement des conteneurs et des applications basées sur les conteneurs. Il en existe d’autres, mais celle-ci est la plus utilisée. Elle est par ailleurs plus facile à déployer et à utiliser que ses concurrentes. C’est  une solution open source , sécurisée et économique. De nombreux individus et entreprises contribuent au développement de ce projet. Un large écosystème de produits, services et ressources sont développés par cette vaste communauté. Initialement conçue pour Linux, Docker permet aussi  la prise en charge des containers sur Windows ou Mac grâce à une ” layer ” de virtualisation Linux entre le système d’exploitation Windows / macOS et l’environnement runtime Docker. Il est donc possible d’exécuter des conteneurs Windows natifs sur des environnements de conteneurs Windows ou Linux. Un Conteneur Un conteneur Docker est une unité logicielle légère, portable et isolée qui regroupe une application et toutes ses dépendances (bibliothèques, configurations, etc.) afin de garantir son exécution de manière cohérente sur n'importe quel environnement. Les conteneurs Docker utilisent les fonctionnalités de virtualisation du noyau Linux, comme les namespaces et les cgroups , pour fournir une isolation des processus sans nécessiter une machine virtuelle complète. Cela les rend plus rapides et plus efficaces en termes de ressources par rapport aux VM. Chaque conteneur est basé sur une image Docker , qui est un ensemble immuable de fichiers définissant l’environnement nécessaire à l’exécution de l’application. Docker utilise un moteur (Docker Engine) pour gérer la création, l’exécution et l’arrêt des conteneurs. En résumé, Docker permet de déployer des applications de manière portable, reproductible et évolutive , ce qui est particulièrement utile pour le développement, les tests et la mise en production. 🚀 Docker Compose Docker Compose est en fait un moyen de gérer plusieurs conteneur docker grâce a un fichier de configuration au format YAML sous la forme suivante :  --- service: image: image-du-conteneur container_name: nom-du-conteneur environment: - PUID=1000 - PGID=1000 - TZ=Europe/Paris volumes: - répertoire-de-la-vm:repertoire-dans-le-conteneur ports: - port:port restart: unless-stopped networks: - backend networks: backend: external: true Installation de Docker et Docker Compose II - Installation Sur la plupart des procédure en ligne, l'installation se fait manuellement. Mais peut de gens savent que docker prévoir un script d'installation qui se charge de faire l'ensemble de la procédure et avec tout les paquets a jour. Pour ce faire saisissez la commande suivante :  apt update && apt upgrade -y && apt install curl -y curl -sSL get.docker.com | sh Suite a ça l'installation peut prendre quelques minutes en fonction de votre configuration mais normalement tout devrais être installé. Vous pouvez vérifié ça grâce a la commande :  docker -v Les Bonnes Pratiques III - Les Bonnes Pratiques pour l'utilisation de docker compose, je vous fait quelques recommandations :  Organisation concernant l'organisation il peut sembler logique de mettre toutes les configuration dans le meme fichier, mais ce n'est pas le mieux a faire sauf dans certain cas. Le mieux est 1 services 1 dossier voici un exemple d'arborescence :  Dossier |_ docker-compose.yml |_volume    |_fichier de configuration Mais il serait nécéssaire de mettre plusieurs conteneur dans le meme fichier quand cela concerne le meme services. Il est possible qu'un service ai besoin d'un conteneur de base de donnée, et dans ce cas il faudra mettre le services et le conteneur de base de données dans le meme fichier docker-compose.yml car il peuvent avoir des dépendance entre eux. Réseaux Pour la gestion des réseaux, chacun fait a ça manière. Moi en général je crée un réseau : frontend pour les servcies que je compte exposer et un réseau : backend pour les services qui s'occupe de l'automatisation ou de la base de données par exemple. Pour la création de réseau je ferais ça plus tard dans cette procédure. Mots de Passe Lors de la configuration de conteneur il peut défois être demander de spécifié un mot de passe par exemple dans la partie environement. Il serait tentant de mettre directement le mot de passe dans le fichier docker compose mais il y a plus simple et plus sécurisé. En effet il est possible de crée des fichier .env dans lequelle il est possible de spécifié des valeurs sous forme de variable. L'avantage c'est que dans le fichier docker compose aucun mot de passe en clair n'est présent, et on peut réutiliser les variable défini dans l'ensemble du fichier docker compose. D'ailleur ce fichier ne concerne pas que les mot de passe mais toutes les valeurs qui sont configurable dans le fichier docker compose.