0% ont trouvé ce document utile (0 vote)
3 vues24 pages

Docker Compose

Docker Compose est un outil qui simplifie la gestion et le déploiement d'applications conteneurisées en utilisant des fichiers de configuration YAML. Il permet de définir des services, réseaux et volumes, facilitant ainsi le développement, la collaboration et la portabilité des applications. Les commandes principales incluent 'docker-compose up' pour démarrer les services et 'docker-compose down' pour les arrêter, rendant la gestion des conteneurs plus efficace.

Transféré par

Mohamed Yassine
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues24 pages

Docker Compose

Docker Compose est un outil qui simplifie la gestion et le déploiement d'applications conteneurisées en utilisant des fichiers de configuration YAML. Il permet de définir des services, réseaux et volumes, facilitant ainsi le développement, la collaboration et la portabilité des applications. Les commandes principales incluent 'docker-compose up' pour démarrer les services et 'docker-compose down' pour les arrêter, rendant la gestion des conteneurs plus efficace.

Transféré par

Mohamed Yassine
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Docker Compose

Introduction à Docker Compose


• Mise en situation :
Vous manipulez une multitude de conteneurs. Chacun nécessite
sa propre configuration, ses commandes individuelles, et la
moindre erreur entraîne une interruption de service gênante
• Docker Compose offre une solution simple et efficace
pour orchestrer et gérer les applications conteneurisées
• Docker compose utilise des fichiers de configuration
YAML pour définir l’ensemble des conteneurs, des
réseaux, des volumes et des autres ressources
nécessaires à une application.

23/04/2026 155
Rôle de Docker Compose

• Docker Compose permet de simplifier et optimiser le déploiement et la


gestion d’applications conteneurisées :
– Développement: Permet de tester et de développer une application multi-
conteneurs localement en utilisant un seul fichier de configuration.
– Déploiement: Facilite le déploiement de l’application sur différents
environnements (production, staging, etc.) en utilisant la même configuration.
– Gestion: Permet de démarrer, d’arrêter, de redémarrer et de mettre à l’échelle
les conteneurs de l’application de manière simple et centralisée.

23/04/2026 156
Avantages de Docker Compose : Contrôle
simplifié
• Il permet de définir et de gérer des applications multi-conteneurs dans
un seul fichier YAML.
Simplifie la tâche complexe d’orchestration et de coordination de divers
services
Facilite la gestion et la réplication de tout l’environnement de
l’application conteneurisée

23/04/2026 157
Avantages de Docker Compose :
Collaboration et portabilité
• Les fichiers de configuration sont faciles à partager, facilitant la
collaboration entre les développeurs, les équipes opérationnelles et les
autres parties prenantes
• Docker compose prend en charge les variables d’environnement dans le
fichier Compose
 Il est possible d’utiliser ces variables pour personnaliser la
composition pour différents environnements ou différents utilisateurs.

23/04/2026 158
Avantages de Docker Compose :
Développement rapide d’applications
• La configuration utilisée pour créer un conteneur est conservée en
cache
• Lors du redémarrage d’un service qui n’a pas changé, on réutilise les
conteneurs existants
• La réutilisation des conteneurs signifie qu’il est possible d’apporter des
modifications aux environnement très rapidement.

23/04/2026 159
Installation et Configuration

• Pour installer docker compose, nous utilisons la commande suivante


pour en télécharger la dernière version:
sudo curl -L "[Link]
compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

23/04/2026 160
Installation et Configuration

• Nous attribuons les permissions d’exécution au binaire

sudo chmod +x /usr/local/bin/docker-compose

• Nous vérifions que Docker Compose est installé avec succès en


exécutant la commande suivante : docker-compose --version

23/04/2026 161
Commandes de Docker Compose

• Les commandes principales de Docker Compose sont :


– docker-compose up : permet de Démarrer tous les services définis dans le fichier
[Link]  accélérer le démarrage de l’application en
développement ou en production
– docker-compose build: permet de Construire les images des conteneurs définis
dans [Link] créer les images nécessaires avant de déployer
l’application sur un nouvel environnement
– docker-compose run : Démarre un nouveau conteneur en utilisant une image
définie dans docker-compose,yaml exécuter des commandes ponctuelles dans
un conteneur ou tester une nouvelle fonctionnalité de l’application.

23/04/2026 162
Commandes de Docker Compose

– docker-compose ps: permet d’afficher la liste des conteneurs en cours d’exécution, avec
des informations telles que l’ID du conteneur, l’image, l’état et les ports exposés 
surveiller l’état de l’application et identifier les conteneurs qui pourraient poser
problèmes
– docker-compose scale: permet de mettre à l’échelle le nombre de conteneurs en cours
d’exécution pour un service donné  augmenter ou diminuer la capacité de votre
application en fonction de la charge. Exemple: docker-compose up –d --scale web=3
– docker-compose logs : permet d’afficher les journaux des conteneurs en cours
d’exécution  déboguer les problèmes et identifier les erreurs dans votre application.
– docker-compose down: arrête tous les services en cours d’exécution et supprime les
conteneurs associés nettoyer l’environnement de développement ou de production
après avoir terminé les tests.

23/04/2026 163
Format et Utilisation du fichier docker-
[Link]
• Docker Compose s’appuie sur des fichiers de configuration YAML,
généralement nommés [Link], pour définir:
– les services,
– les réseaux,
– les volumes
– et d’autres ressources indispensables à une application

23/04/2026 164
Exemple de fichier [Link]

23/04/2026 165
Sections du fichier [Link]

• version: Indique la version du format de fichier Docker Compose utilisée


(devenue obsolète dans les version récentes)
• services: Définit les services qui composent l’application. Chaque service
est défini par un nom et une configuration
• networks: Définit les réseaux utilisés par les services
• volumes: Définit les volumes de données persistants utilisés par les
services
• configs: Définit les configurations statiques à injecter dans les services
• secrets: Définit les secrets sensibles à injecter dans les services

23/04/2026 166
Exemple d’utilisation de Docker-compose
• Containeriser PHP/Apache/MySQL:
– Il y a 5 fichiers pour cet exemple qu’on peut copier et coller à partir de ce cours
selon cette structure
– On peut lancer « docker-compose up » à partir de la racine du projet pour lancer
l'ensemble de l’exemple et pointer le navigateur vers [Link] pour
voir le résultat
– Nous utiliserons une page PHP permettant de vérifier la connexion à une base de
données :[Link]

23/04/2026 167
[Link]

<h1>Hello Docker compose!</h1> $pass);


<h3>Attempting first container if ($conn->connect_error) {
MySQL connection from php second die("Connection failed: " . $conn-
container...</h3> >connect_error);
<?php } else {
$host = 'mysql'; echo "Connected to MySQL
$user = 'root'; successfully!";
$pass = ‘******'; }
$conn = new mysqli($host, $user, ?>

23/04/2026 168
[Link]

• Ce code tente de se connecter à une base de données MySQL


en utilisant l'interface mysqli de PHP. S'il réussit, il affiche un
message de succès. Sinon, il affiche un message d'échec.

23/04/2026 169
[Link]
version: "3.2" ${PROJECT_ROOT}/:/var/www/ht - mysql
services: ml/ networks:
php: container_name: php - frontend
build: ========================== - backend
context: './php/' apache: ports:
args: build: - "80:80"
PHP_VERSION: context: './apache/' volumes:
${PHP_VERSION} args: -
networks: APACHE_VERSION: ${PROJECT_ROOT}/:/var/www/ht
- backend ${APACHE_VERSION} ml/
volumes: depends_on: container_name: apache
- - php

23/04/2026 170
[Link]
mysql: "${DB_ROOT_PASSWORD}" data:
image: MYSQL_DATABASE:
mysql:${MYSQL_VERSION:-latest} "${DB_NAME}"
restart: always MYSQL_USER:
ports: "${DB_USERNAME}"
- "3306:3306" MYSQL_PASSWORD:
volumes: "${DB_PASSWORD}"
- data:/var/lib/mysql container_name: mysql
networks: networks:
- backend frontend:
environment: backend:
MYSQL_ROOT_PASSWORD: volumes:

23/04/2026 171
apache/Dockerfile

FROM httpd:2.4.33-alpine

RUN apk update; \


apk upgrade;
# Copy apache vhost file to proxy php requests to php-fpm container
COPY [Link] /usr/local/apache2/conf/[Link]
RUN echo "Include /usr/local/apache2/conf/[Link]" \
>> /usr/local/apache2/conf/[Link]

23/04/2026 172
php/Dockerfile

FROM php:7.2.7-fpm-alpine3.7

RUN apk update; \


apk upgrade;

RUN docker-php-ext-install mysqli

23/04/2026 173
apache/[Link] : liaison entre
PHP et Apache
ServerName localhost DocumentRoot /var/www/html/
<Directory /var/www/html/>
LoadModule deflate_module DirectoryIndex [Link]
/usr/local/apache2/modules/mod_deflate.so Options Indexes FollowSymLinks
LoadModule proxy_module AllowOverride All
/usr/local/apache2/modules/mod_proxy.so Require all granted
LoadModule proxy_fcgi_module </Directory>
/usr/local/apache2/modules/mod_proxy_fcgi.
so
# Send apache logs to stdout and stderr
CustomLog /proc/self/fd/1 common
<VirtualHost *:80>
# Proxy .php requests to port 9000 of the php-fpm container ErrorLog /proc/self/fd/2
ProxyPassMatch ^/(.*\.php(/.*)?)$ </VirtualHost>
fcgi://php:9000/var/www/html/$1

23/04/2026 174
.env

• Un fichier .env utilisé avec Docker Compose permet de définir les


variables qui doivent être mises à disposition pour l'interpolation lors de
l'exécution de docker compose up
• Ce fichier contient généralement des paires clé-valeur de variables, et il
permet de centraliser et de gérer la configuration en un seul endroit
• Le fichier .env est utile si vous avez plusieurs variables à stocker
• Le fichier .env est la méthode par défaut pour définir les variables
• Le fichier .env doit être placé à la racine du répertoire du projet, à côté
du fichier [Link]

23/04/2026 175
.env

PHP_VERSION=5.6
MYSQL_VERSION=5.7
APACHE_VERSION=2.4.32

DB_ROOT_PASSWORD=rootpassword
DB_NAME=dbtest
DB_USERNAME=otherUser
DB_PASSWORD=password

PROJECT_ROOT=./public_html

23/04/2026 176
Résultat final

23/04/2026 177

Vous aimerez peut-être aussi