Table des matières

EXPLICATION

Les commandes docker run pouvant être contenu dans le dockerfile peuvent être assez longues et difficilement lisibles. Il faudra aussi lancer cette commande pour chaque nouveau démarrage de l'application et gérer les différents conteneurs séparement.
Pour ces motifs, le fichier docker-compose.yml permet de centraliser la gestion de multiples conteneurs d'une application docker en même temps depuis un seul fichier pour exécuter, définir des services, des volumes et mettre en relation différents conteneurs d'une application.
Il permet également de les relier via un ou plusieurs réseaux plus facilement. Son format d'écriture est le YAML.
Les fichiers .yml permettent de structurer les données. C'est un équivalent du XML ou du JSON et plus lisible pour un humain.
La commande docker compose va chercher un fichier docker-compose.yml qui décrit des objets docker (principalement des containers) et leur configuration :


Cela permet de décrire un environnement, et de toucher à ce qu'on appelle l'infrastructure as code.

Voici des commandes courantes du docker-compose :

## Exécuter les services du docker-compose.yml
docker-compose up
    -d : Exécuter les conteneurs en arrière-plan

## Lister des conteneurs du Docker Compose
docker-compose ls
    -a ou --all : afficher aussi les conteneurs stoppés

## Sorties/erreurs des conteneurs du Docker Compose
docker-compose logs
    -f : suivre en permanence les logs du conteneur
    -t : afficher la date et l'heure de la réception de la ligne de log
    --tail = <NOMBRE DE LIGNE> : nombre de lignes à afficher à partir de la fin pour chaque conteneur.

   
   
## Tuer les conteneurs du Docker Compose
docker-compose kill

## Stopper les conteneurs du Docker Compose
docker-compose stop
    -t ou --timeout : spécifier un timeout en seconde avant le stop (par défaut : 10s)

## Démarrer les conteneurs du Docker Compose
docker-compose start

## Arrêtez les conteneurs et supprimer les conteneurs, réseaux, volumes, et les images
docker-compose down
    -t ou --timeout : spécifier un timeout en seconde avant la suppression (par défaut : 10s)

## Supprimer des conteneurs stoppés du Docker Compose
docker-compose rm
    -f ou --force : forcer la suppression

## Lister les images utilisées dans le docker-compose.yml
docker-compose images

STRUCTURE

Dans le cadre d'une d'un container composé de plusieurs services, nous pouvons définir une arborescence de dossiers pour une stack Docker avec plusieurs Dockerfiles pour plusieurs services, voici une structure typique que nous pouvons utiliser :

project-root/
│
├── docker-compose.yml
├── service1/
│   ├── Dockerfile
│   └── ... (autres fichiers nécessaires pour service1)
│
├── service2/
│   ├── Dockerfile
│   └── ... (autres fichiers nécessaires pour service2)
│
└── service3/
    ├── Dockerfile
    └── ... (autres fichiers nécessaires pour service3)

ATTRIBUT

build: ./web/ #indiquer le chemin d'un dockerfile pour construire son propre conteneur.

build: # contexte où le conteneur devra récupérer les fichiers partagés nécessaires à son

  context: .
  dockerfile: ./dockerfile
  

ports: #choix du port (8000 port machine hôte, 80 port du service du conteneur)

  1. 8000:80

volumes: # mapping des répertoires partagés entre la machine hôte et le conteneur :

  1. ./web:/var/www/html

LE SAVIEZ-VOUS

Un tiret dans un docker compose constitue un tableau