Aller au contenu

Docker-compose

On a appris à faire des conteneurs. Mais souvent une application web ou autre nécessite plusieurs conteneurs. Par exemple : - Une base de données - Un serveur front-back C'est dans ce cas que l'on utilise les orchestrateurs de conteneurs.

Podman/Docker-compose

D'autres orchestrateurs existent comme openshift ou kubernetes

Je vais prendre exemple sur ce projet : openshift ou kubernetes

Pour installer docker-compose, installez le paquet avec votre gestionnaire de paquets préféré. Pour podman-compose allez plus bas.

docker-compose.yml

version: "3.9"
volumes:
  data: 
services:
  mypgdb:
    image: docker.io/library/postgres:latest
    container_name: mypgdb
    restart: unless-stopped
    env_file:
      - django.env
    volumes:
      - data:/var/lib/postgresql/data
    networks:
      - network-benevalibre
  django:
    image: bene:latest
    container_name: django
    restart: unless-stopped
    env_file:
      - django.env
    networks:
      - network-benevalibre
    ports:
      - "5000:80"
networks:
  network-benevalibre: # Définition d'un réseau personnalisé
    driver: bridge # Type de réseau

Analysons un peu le code :

  • volumes : permets de créer des volumes qu'on garde sur le disque même si le conteneur est arrêté. Ça permet par exemple de garder les documents de la base de données.
  • services : on définie les conteneurs qui doivent tourner ensemble. On les nomme et on les définit.
    • image : emplacement de l'image docker builder (construite)
    • container_name: nom du conteneur
    • restart: condition de redémarage du conteneur
    • env_file : si vous utilisez un fichier avec des variables d'environnement
    • networks : definie les reseaux accessible au conteneneur (voir plus bas)
  • network : détermine les reseaux entre les conteneurs
    • nom-du-réseaux
    • driver : type de réseaux

Pour le type de réseaux en docker, ce sont les mêmes que pour les VM. Plus d'information su la documentation officielle

Utilisation

Warning

Pour Podman, installez le packet podman-compose et dans les dépendances optionnelles, vous trouverez souvent un paquet pour le dns rootless.

Exemple : aardvark-dns

Il faut d'abord avoir les bonnes images disponibles. N'oubliez pas de construire les images avant avec la commande :

Version podman

podman build -f Nom_du_dockerfile -t bene

Version docker

docker build -f Nom_du_dockerfile -t bene .

Une fois les images construites, vous pouvez lancer les conteneurs avec la commande :

Version podman

 podman-compose up  -d

Version Docker

docker-compose up -d

Le '-d' permets de détacher podman-compose de la console.

SI vous voulez arretez les conteneurs :

Version podman

podman-compose down

Version docker

docker-compose down