Outils pour utilisateurs

Outils du site


informatique:docker:compose

Docker Compose

Objectif

Avec compose on peut gérer un ensemble de dockers liés/ou pas entre eux par le biais de fichiers de conf.
J'en ai besoin pour :

  • Être plus confortable pour gérer mon lot de dockers web avec Traefik. Voir Traefic Reverse Proxy.
  • Centraliser (sous git) des fichiers de confs pour la création de mes dockers. Aujourd'hui c'est éparpillé dans le wiki sous forme d'exemples, c'est pas pratique.

C'est promis, fini les dockers runs à rallonge yes

Installation

On prend la dernière release de compose et on la place dans notre bin :

sudo -s
curl -L https://github.com/docker/compose/releases/download/1.24.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Lancement d'un compose de dockers

Un fichier de conf

Créer un fichier de configuration docker-compose.yml, exemple :

docker-compose.yml

version: '3'
services:
  Nginx_1:
    image: richarvey/nginx-php-fpm
    restart: always
  Nginx_2:
    image: richarvey/nginx-php-fpm

Puis lancer le compose en mode démon :

docker-compose up -d

Plusieurs fichiers de conf

Pour gérer plusieurs composes différents, on peut jouer avec une arborescence et l'option -f de compose :

my-project
|
|----> service-a (git submodule)
|   |
|          -----> docker-compose.yml
|
|----> service-b (git submodule)
|   |
|          -----> docker-compose.yml
|
 -----> docker-compose.yml

Exemple pour vérifier si compose entend bien plusieurs fichiers avec la directive config qui listera les configurations :

docker-compose -f service-a/docker-compose.yml -f service-b/docker-compose.yml config

La documentation associée : docs.docker.com/compose/multiple-compose-files

Exemples de fichier de conf

Transposition simple

Transposer ce docker run en fichier de conf :

docker run -d --restart=always --name="Nginx_Dokuwiki" \
-p 8081:80 \
-e "PUID=`id -u $USER`" -e "PGID=`id -g $USER`" \
-v /mnt/Raid/Documents_de_Florian/Documents_NAS/Dockers/Docker_Data/Nginx_Dokuwiki/:/var/www/html \
richarvey/nginx-php-fpm

Seul petit bémol, on ne peut pas faire interpréter du code dans le yml. Donc id -u $USER ne fonctionnera pas.
Sinon cela donne :

docker-compose.yml

version: '3'
services:
  Nginx_Dokuwiki:
    image: richarvey/nginx-php-fpm
    restart: always
    ports:
      - "8081:80"
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - /mnt/Raid/Documents_de_Florian/Documents_NAS/Dockers/Docker_Data/Nginx_Dokuwiki/:/var/www/html​​​​​

Transposition avec construction Dockerfile

Remplacer une construction à partir d'un Dockerfile puis le lancement :

docker build --no-cache -t "ma_super_image" .
docker run -d --restart=always --name="mon_super_docker" ma_super_image

Par :

docker-compose.yml

version: "3"
services:
  mon_super_service:
    build:
      context: .
      dockerfile: Dockerfile
    image: ma_super_image
    container_name: mon_super_docker
    restart: always

Ressources

Documentation Web

La documentation officielle de compose : docs.docker.com/compose/
Intérêt : blog.ippon.fr/orchestration-de-containers-docker-docker-compose-et-crane
Installation de l'utilitaire (un curl) : docs.docker.cominstall-compose

Github privé

Là où je positionne mes configurations compose : github.com/floriantales/Docker_Composes

informatique/docker/compose.txt · Dernière modification : 2020/10/09 17:35 de florian