Outils pour utilisateurs

Outils du site


informatique:docker:compose

Ceci est une ancienne révision du document !


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'exemple, c'est pas pratique.

C'est promis, fini les docker run à rallonge yes

Installation

On prend la dernière release de compose et on le place dans son 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 :

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

Un exemple de fichier de conf

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 interpreter 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​​​​​

Ressources

La documentation officielle de compose : docs.docker.com/compose/

informatique/docker/compose.1547644835.txt.gz · Dernière modification : 2025/01/14 11:19 (modification externe)