Source : https://4204d4.ve2cuy.com/docker-application-multi-service/ Date : 11 février 2021 - Actualisé 2025.12.04
docker run -ePré-requis
Lors de lâassemblage dâune application multi-conteneurs (appelĂ© aussi MICRO-SERVICES), il sera peut-ĂȘtre nĂ©cessaire de fournir, Ă un conteneur, des paramĂštres fonctionnels dâun autre conteneur : đ.
đ€ Quel est cet autre conteneur? đ€
Prenons une application constituĂ©e dâun conteneur, pour une base de donnĂ©es de type âMySQLâ et, un autre conteneur pour lâapplication Web de gestion du SGBD MySQL, âphpmyadminâ.
Lors de lâinstanciation de lâimage de type âphpmyadminâ, il sera nĂ©cessaire de renseigner des informations tel que le port IP de la BD, du nom du compte, du mot de passe Ă la BD, âŠ
Ce transfert dâinformation sera effectuĂ©, gĂ©nĂ©ralement, par lâutilisation de variables dâenvironnement.
Par exemple, pour fixer le mot de passe de lâutilisateur ârootâ, lors du dĂ©marrage dâun conteneur de type mariaDB, il faudra utiliser la syntaxe suivante:
docker run --net reseau01 -it -d --name maBD -e MYSQL_ROOT_PASSWORD=password mariadb
NOTE : â> Tester lâaccĂšs Ă la BD en utilisant la commande âmysqlâ dans le conteneur âmaBDâ.
Lâoption -e permet de renseigner la variable dâenvironnement MYSQL_ROOT_PASSWORD.
NOTE : Le nom des variables nâest pas fixĂ© de façon arbitraire. Il faut se rĂ©fĂ©rer Ă la documentation de lâimage dĂ©sirĂ©e. Par exemple, pour
mariadbvoir ici.
-edocker run -it --rm -e PS1='yo: ' -e LOGIN_NAME='Fred Lacrosse' alpine /bin/sh
Résultat dans le conteneur:
yo: env
HOSTNAME=94cc229f2e3e
PS1=yo:
LOGIN-NAME=Fred Lacrosse
docker run -it --rm --hostname=maAlpine -e LOGIN_NAME='Coco Lafortune' alpine
Résultat dans le conteneur:
-----
/ # env
HOSTNAME=maAlpine
LOGIN-NAME=Coco Lafortune
NOTE : Ă dĂ©faut de lâoption
--hostname, sa valeur sera le ID du conteneur.
Dans un dossier vide, renseigner le fichier Dockerfile suivant:
# Ă partir d'une image
FROM alpine
# Optionnel
LABEL Alain Boudreault <aboudrea@cstj.qc.ca>
ENV EXEMPLE=2.1
# Exécuter des commandes dans l'image
# RUN apt-get update
COPY momo-dit.sh /
RUN chmod a+x /momo-dit.sh
# Commande à exécuter au démarrage d'un conteneur
CMD ["/momo-dit.sh"]
momo-dit.shRenseigner le fichier momo-dit.sh suivant:
#!/bin/sh
# Afficher à l'écran le contenu de la variable $MESSAGE
# Cette variable doit-ĂȘtre passĂ©e au conteneur avec '-e MESSAGE="Une message Ă afficher"'
echo "-----------------------------------------------------"
echo "Momo dit: " $MESSAGE
echo "-----------------------------------------------------"
echo "EXEMPLE: " $EXEMPLE
echo
docker build --tag docker-hub-login/momo-dit:1.1 .
-edocker run --rm docker-hub-login/momo-dit:1.1
Résultat:
-----------------------------------------------------
Momo dit:
-----------------------------------------------------
EXEMPLE: 2.1
-edocker run -e MESSAGE='Il fĂźt de la sorte un assez long chemin' --rm docker-hub-login/momo-dit:1.1
Résultat:
-----------------------------------------------------
Momo dit: Il fĂźt de la sorte un assez long chemin
-----------------------------------------------------
EXEMPLE: 2.1
alpine, qui reçoit comme variables dâenvironnement; USERNAME et PASSWORDvalidation.sh qui vĂ©rifie si;
USERNAME == etudiantPASSEWORD == 420votre-dockerhub-login/alpine-login:latestPetit rappel bash:
#!/bin/bash # Vérifier le contenu du premier paramÚtre if [ $1 != "Bob" ] ; then echo "Erreur: Nom de login invalide" exit 1 fi echo "Bienvenue $1 chez nous!"
Mise en place dâune application, Ă partir dâun conteneur MariaDB et dâun conteneur adminer, qui roulent (les deux conteneurs) dans un rĂ©seau privĂ©.
docker network create reseau-3.1
docker network ls
NETWORK ID NAME DRIVER SCOPE
6eca92520b8e bridge bridge local
5b64d4b7c1d2 host host local
786951a15a98 none null local
173ec396a986 reseau-3.1 bridge local
docker run --net reseau-3.1 \
--name maBD \
-e MYSQL_ROOT_PASSWORD=password \
-d mariadb
docker run --net reseau-3.1 -p 8080:8080 -d adminer
NOTE : La documentation de âadminerâ utilise une syntaxe dĂ©prĂ©ciĂ©e (
âlink maBD) pour le lien vers la BD. Il est prĂ©fĂ©rable dâutiliser un rĂ©seau privĂ©.
Dans un fureteur, inscrire lâadresse localhost:8080, ce qui devrait afficher lâinterface Adminer.
NOTE : Il nâest pas nĂ©cessaire de connaĂźtre lâadresse IP du conteneur
mariadb, Ă©tant donnĂ© quâil utilise le mĂȘme rĂ©seau privĂ© queadmineralors nous pouvons utiliser le nom du conteneur pour la connexion.
Résultat:
net-labo3.5phpmyadmin, crĂ©er une bd âmes_amisânom (var char 30)email (var char 30)telephone (var char 14)
NOTE : Il faut consulter la documentation de
phpmyadminpour identifier les variables dâenvironnement nĂ©cessaires au fonctionnement du conteneur. Il nâest pas nĂ©cessaire dâutiliser toutes les variables mentionnĂ©es dans la documentation. Seulement celles concernant lâutilisateur PMA, son mot de passe et le nom du conteneur du serveur mySQL.
Document rédigé par Alain Boudreault © 2021-2026
Version 2025.12.03.1
Site par ve2cuy