L'auteur de l'article, dont nous publions la traduction aujourd'hui, dit qu'il est destiné aux développeurs qui souhaitent apprendre Docker Compose et vont créer leur premiÚre application client-serveur à l'aide de Docker. Le lecteur est censé connaßtre les bases de Docker. Si ce n'est pas le cas, vous pouvez consulter
cette série de documents,
cette publication, oĂč les bases de Docker sont discutĂ©es avec les bases de Kubernetes, et
cet article pour les débutants.

Qu'est-ce que Docker Compose?
Docker Compose est un outil inclus avec Docker. Il est conçu pour résoudre les problÚmes liés au déploiement de projets.
En étudiant les bases de Docker, vous pourriez rencontrer la création d'applications simples qui fonctionnent de maniÚre autonome, indépendamment, par exemple, des sources de données externes ou de certains services. En pratique, de telles applications sont rares. Les projets réels incluent généralement un ensemble complet d'applications collaboratives.
Comment savoir si vous devez utiliser Docker Compose lors du dĂ©ploiement d'un projet? En fait - trĂšs simple. Si plusieurs services sont utilisĂ©s pour assurer le fonctionnement de ce projet, Docker Compose peut ĂȘtre utile. Par exemple, dans une situation oĂč ils crĂ©ent un site Web qui, pour authentifier les utilisateurs, doit se connecter Ă la base de donnĂ©es. Un projet similaire peut comprendre deux services - l'un qui fournit le site et l'autre qui est responsable de la maintenance de la base de donnĂ©es.
La technologie Docker Compose, si elle est décrite de maniÚre simplifiée, permet, avec une seule commande, de lancer de nombreux services.
Différence entre Docker et Docker Compose
Docker est utilisé pour gérer les conteneurs individuels (services) qui composent l'application.
Docker Compose est utilisĂ© pour gĂ©rer simultanĂ©ment plusieurs conteneurs qui composent l'application. Cet outil offre les mĂȘmes fonctionnalitĂ©s que Docker, mais vous permet de travailler avec des applications plus complexes.
Docker (conteneur unique) et Docker Compose (conteneurs multiples)Cas d'utilisation typique de Docker Compose
Docker Compose est, entre de bonnes mains, un outil trÚs puissant qui vous permet de déployer rapidement des applications avec une architecture complexe. Nous allons maintenant examiner un exemple d'utilisation pratique de Docker Compose, dont l'analyse vous permettra d'évaluer les avantages qui vous permettront d'utiliser Docker Compose.
Imaginez que vous ĂȘtes dĂ©veloppeur d'un projet Web. Ce projet comprend deux sites Web. Le premier permet aux professionnels de crĂ©er, en quelques clics, des boutiques en ligne. Le second est destinĂ© au support client. Ces deux sites interagissent avec la mĂȘme base de donnĂ©es.
Votre projet devient de plus en plus populaire, et il s'avÚre que la puissance du serveur sur lequel il fonctionne n'est plus suffisante. En conséquence, vous décidez de transférer l'intégralité du projet sur une autre machine.
Malheureusement, vous n'avez pas utilisé quelque chose comme Docker Compose. Par conséquent, vous devrez transférer et reconfigurer les services un par un, en espérant que vous, dans le processus de ce travail, n'oublierez rien.
Si vous utilisez Docker Compose, le transfert de votre projet vers un nouveau serveur peut ĂȘtre rĂ©solu en exĂ©cutant plusieurs commandes. Afin de terminer le transfert du projet vers un nouvel emplacement, il vous suffit d'effectuer certains rĂ©glages et de tĂ©lĂ©charger une copie de sauvegarde de la base de donnĂ©es sur le nouveau serveur.
Développement d'une application client-serveur à l'aide de Docker Compose
Maintenant que vous savez pourquoi nous allons utiliser Docker Compose, il est temps de créer votre premiÚre application client-serveur à l'aide de cet outil. à savoir, nous parlons du développement d'un petit site Web (serveur) en Python, qui peut produire un fichier avec un fragment de texte. Ce fichier est demandé au serveur par un programme (client), également écrit en Python. AprÚs avoir reçu le fichier du serveur, le programme affiche à l'écran le texte qui y est stocké.
Veuillez noter que nous nous attendons à ce que vous possédiez les bases de Docker et que vous avez déjà installé la plate-forme Docker.
Mettons-nous au travail sur le projet.
â1. CrĂ©ation de projet
Afin de construire votre premiÚre application client-serveur, je vous suggÚre de commencer par créer un dossier de projet. Il doit contenir les fichiers et dossiers suivants:
docker-compose.yml
. Il s'agit d'un fichier Docker Compose qui contiendra les instructions nécessaires pour démarrer et configurer les services.- Dossier du
server
. Il contiendra les fichiers nécessaires pour assurer le fonctionnement du serveur. client
dossier. Voici les fichiers de l'application client.
Par conséquent, le contenu du dossier principal de votre projet devrait ressembler à ceci:
. âââ client/ âââ docker-compose.yml âââ server/ 2 directories, 1 file
â2. CrĂ©ation de serveur
Ici, dans le processus de création du serveur, nous aborderons certaines choses de base concernant Docker.
2a. Création de fichiers
Accédez au dossier du
server
et créez-y les fichiers suivants:
- Fichier
server.py
. Il contiendra le code du serveur. - Fichier
index.html
. Ce fichier contiendra un morceau de texte que l'application cliente devrait afficher. - Fichier
Dockerfile
. Il s'agit d'un fichier Docker qui contiendra les instructions nécessaires pour créer un environnement de serveur.
Voici Ă quoi devrait ressembler le contenu de votre
server/
dossier:
. âââ Dockerfile âââ index.html âââ server.py 0 directories, 3 files
2b. Modification d'un fichier Python.
Ajoutez le code suivant au fichier
server.py
:
Ce code vous permet de créer un simple serveur Web. Il donnera aux clients le fichier
index.html
, dont le contenu sera ensuite affiché sur la page Web.
2c. Ădition de fichiers HTML
Ajoutez le texte suivant au fichier
index.html
:
Docker-Compose is magic!
Ce texte sera transmis au client.
2d. Modification du Dockerfile
Nous allons maintenant créer un
Dockerfile
simple, qui sera responsable de l'organisation du runtime pour le serveur Python. Nous utiliserons l'
image officielle destinée à l'exécution de programmes écrits en Python comme base de l'image créée. Voici le contenu du Dockerfile:
Maintenant, travaillons sur le client.
â3. CrĂ©ation de client
En créant la partie client de notre projet, nous rappellerons simultanément certaines des bases de Docker.
3a. Création de fichiers
Accédez au dossier de votre projet
client
et créez-y les fichiers suivants:
- Le fichier
client.py
. Ce sera le code client. - Fichier
Dockerfile
. Ce fichier joue le mĂȘme rĂŽle qu'un fichier similaire dans le dossier du serveur. Ă savoir, il contient des instructions dĂ©crivant la crĂ©ation d'un environnement pour exĂ©cuter du code client.
Par conséquent, votre
client/
dossier Ă ce stade du travail devrait ressembler Ă ceci:
. âââ client.py âââ Dockerfile 0 directories, 2 files
3b. Ădition de fichier Python
Ajoutez le code suivant au fichier
client.py
:
Grùce à ce code, l'application cliente peut télécharger des données depuis le serveur et les afficher à l'écran.
3c. Modification du Dockerfile
Comme dans le cas du serveur, nous créons un
Dockerfile
simple pour le client, chargé de créer l'environnement dans lequel l'application client Python fonctionnera. Voici le code
Dockerfile
client:
â4. Docker compose
Comme vous l'avez peut-ĂȘtre remarquĂ©, nous avons créé deux projets diffĂ©rents: le serveur et le client. Chacun d'eux a son propre
Dockerfile
. Jusqu'à présent, tout ce qui se passe ne va pas au-delà des bases de l'utilisation de Docker. Nous commençons maintenant avec Docker Compose. Pour ce faire, nous nous tournons vers le fichier
docker-compose.yml
situé dans le dossier racine du projet.
Veuillez noter qu'ici nous
docker-compose.yml
pas de considĂ©rer absolument toutes les commandes qui peuvent ĂȘtre utilisĂ©es dans
docker-compose.yml
. Notre objectif principal est de vous donner un exemple pratique qui vous donne une connaissance de base de Docker Compose.
Voici le code Ă mettre dans le
docker-compose.yml
:
â5. Montage du projet
Une fois que toutes les instructions nécessaires sont incluses dans
docker-compose.yml
, le projet doit ĂȘtre assemblĂ©. Cette Ă©tape de notre travail ressemble Ă l'utilisation de la
docker build
, mais la commande correspondante est liée à plusieurs services:
$ docker-compose build
â6. Lancement du projet
Maintenant que le projet est terminé, il est temps de le lancer. Cette étape de notre travail correspond à l'étape à laquelle, lors de l'utilisation de conteneurs individuels, la commande
docker run
est exécutée:
$ docker-compose up
AprÚs avoir exécuté cette commande, le terminal doit afficher le texte téléchargé par le client depuis le serveur:
Docker-Compose is magic!
.
Comme déjà mentionné, le serveur utilise le port informatique
1234
pour répondre aux demandes des clients. Par conséquent, si vous allez sur le navigateur
http: // localhost: 1234 / , une page avec le texte
Docker-Compose is magic!
sera affichée dedans
Docker-Compose is magic!
.
Commandes utiles
Examinons certaines des commandes que vous pourriez trouver utiles lorsque vous travaillez avec Docker Compose.
Cette commande vous permet d'arrĂȘter et de supprimer des conteneurs et d'autres ressources créés par la commande
docker-compose up
:
$ docker-compose down
Cette commande affiche les journaux de service:
$ docker-compose logs -f [service name]
Par exemple, dans notre projet, il peut ĂȘtre utilisĂ© sous la forme suivante:
$ docker-compose logs -f [service name]
.
à l'aide de cette commande, vous pouvez répertorier les conteneurs:
$ docker-compose ps
Cette commande vous permet d'exécuter une commande dans un conteneur d'exécution:
$ docker-compose exec [service name] [command]
Par exemple, cela pourrait ressembler Ă ceci:
docker-compose exec server ls
.
Cette commande vous permet d'afficher une liste d'images:
$ docker-compose images
Résumé
Nous avons examiné les bases du travail avec la technologie Docker Compose, dont la connaissance vous permettra d'utiliser cette technologie et, si vous le souhaitez, de commencer son étude plus approfondie.
Voici le référentiel avec le code du projet que nous avons examiné ici.
Chers lecteurs! Utilisez-vous Docker Compose dans vos projets?
