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 :
C'est promis, fini les dockers runs à rallonge
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
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
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
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
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
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
Là où je positionne mes configurations compose : github.com/floriantales/Docker_Composes