Docker Compose est un outil qui permet de définir et d'orchestrer des applications Docker multi-conteneurs. Il utilise un fichier YAML pour configurer les conteneurs, les réseaux et les volumes de l'application.
Compose peut être utilisé à diverses fins. Les déploiements d'applications à hôte unique, les tests automatisés et le développement local sont les cas d'utilisation les plus populaires de Docker Compose.
Ce didacticiel vous guidera à travers le processus d'installation de la dernière version de Docker Compose sur Debian 9. Nous explorerons également les concepts et commandes de base de Docker Compose.
Prérequis #
Assurez-vous que vous avez satisfait aux prérequis suivants avant de poursuivre ce didacticiel :
- Connecté en tant qu'utilisateur avec des privilèges sudo.
- Ayez Docker installé sur votre machine Debian 9.
Installer Docker Compose sur Debian #
Le package d'installation de Docker Compose est disponible dans les dépôts officiels de Debian 9, mais il ne s'agit pas toujours de la dernière version. L'approche recommandée consiste à installer Docker Compose à partir du référentiel GitHub de Docker.
Au moment de la rédaction de cet article, la dernière version stable de Docker Compose est la version 1.23.1
. Avant de télécharger le binaire Compose, visitez la page de publication du référentiel Compose sur GitHuband, vérifiez s'il existe une nouvelle version disponible au téléchargement.
Effectuez les étapes suivantes pour installer la dernière version de Docker Compose sur Debian 9 :
-
Commencez par télécharger le binaire Docker Compose dans le
/usr/local/bin
répertoire en utilisant lecurl
suivant commande :sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-
Une fois le téléchargement terminé, accordez des autorisations exécutables au binaire Compose :
sudo chmod +x /usr/local/bin/docker-compose
-
Vérifiez l'installation en tapant :
docker-compose --version
La sortie ressemblera à ceci :
docker-compose version 1.23.1, build b02f1306
Démarrer avec Docker Compose #
Dans cette section, nous montrerons comment utiliser Docker Compose pour gérer une pile WordPress sur votre machine Debian 9.
Commencez par créer un répertoire pour le projet et accédez-y :
mkdir wordpress_app
cd wordpress_app
Ouvrez votre éditeur de texte et créez un fichier nommé docker-compose.yml
dans le répertoire du projet :
nano docker-compose.yml
Collez le contenu suivant :
docker-compose.ymlversion: '3.3'
services:
db:
image: mysql:5.7
restart: always
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
wordpress:
image: wordpress
restart: always
volumes:
- ./wp_data:/var/www/html
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
depends_on:
- db
volumes:
db_data:
wp_data:
Alors, que fait le code ci-dessus ?
Dans la première ligne, nous spécifions la version du fichier Compose. Il existe plusieurs versions différentes du format de fichier Compose avec prise en charge de versions spécifiques de Docker.
Ensuite, nous définissons deux services, db
et wordpress
. Chaque service exécute une image et crée un conteneur séparé lors de l'exécution de docker-compose.
La db
service :
- Utilise le
mysql:5.7
image. Si l'image n'est pas présente sur votre système, Compose l'extrairea du référentiel public Docker Hub. - Utilise le redémarrage
always
stratégie qui demandera au conteneur de toujours redémarrer. - Crée un volume nommé
db_data
pour conserver la base de données. - Définit les variables d'environnement pour
mysql:5.7
photo.
Le wordpress
service :
- Utilise
wordpress
image. Si l'image n'est pas présente sur votre système, Compose l'extrairea du référentiel public Docker Hub. - Utilise le redémarrage
always
stratégie qui demandera au conteneur de toujours redémarrer. - Monte le
wp_data
répertoire sur l'hôte vers/var/lib/mysql
à l'intérieur du conteneur. - Transfère le port 80 exposé sur le conteneur vers le port 8080 sur la machine hôte.
- Définit les variables d'environnement pour
wordpress
photo. - Le
depends_on
L'instruction définit la dépendance entre les deux services. Dans cet exemple,db
sera lancé avantwordpress
.
Depuis le répertoire du projet, démarrez l'application WordPress en exécutant la commande suivante :
docker-compose up
Le résultat devrait ressembler à ceci :
...
wordpress_1_70f2f980e1fb | [Mon Nov 19 18:00:31.002748 2018] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.25 (Debian) PHP/7.2.12 configured -- resuming normal operations
wordpress_1_70f2f980e1fb | [Mon Nov 19 18:00:31.002912 2018] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
Compose va extraire les deux images, démarrer deux conteneurs et créer le wp_data
répertoire dans votre répertoire de projet.
Saisissez http://0.0.0.0:8080/
dans votre navigateur et vous verrez l'écran d'installation de Wordpress.
À ce stade, l'application WordPress est opérationnelle et vous pouvez commencer à travailler sur votre thème ou votre plugin.
Pour arrêter Compose appuyez sur CTRL+C
.
Vous pouvez également démarrer Compose en mode détaché en passant le -d
drapeau.
docker-compose up -d
Pour vérifier les services en cours d'exécution, utilisez le ps
choix :
docker-compose ps
Name Command State Ports
----------------------------------------------------------------------------------
wordpress_app_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
wordpress_app_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp
Lorsque Compose s'exécute en mode détaché pour arrêter l'utilisation des services :
docker-compose stop
Si vous souhaitez supprimer entièrement les conteneurs, utilisez le down
choix :
docker-compose down
Passer le --volumes
switch supprimera également les volumes de données :
docker-compose down --volumes
Désinstallation de Docker Compose #
Si vous devez désinstaller Docker Compose, vous pouvez simplement supprimer le binaire en tapant :
sudo rm /usr/local/bin/docker-compose