Auteurs: Robin Gaudin & Noémie Plancherel
Projet réalisé dans le cadre du module RES à la HEIG-VD. Elaboration d'une infrastructure Web en plusieurs étapes.
Pour tester et suivre le contenu de ce répertoire GitHub, il faut avoir préalablement installé Docker
sur votre machine.
- Mettre en place un serveur apache httpd
- L'implémenter dans une image Docker
- Ajout de contenu HTML basique
Pour cette première étape, l'infrastructure de l'image Docker se trouve dans le répertoire ./docker-images/etape1-3/apache-php-image
.
Le dossier src
contient les fichiers sources du site Web.
Contenu:
FROM php:7.2-apache
COPY src/ /var/www/html/
Ce fichier permet de configurer l'image Docker du serveur apache httpd.
Le FROM
permet de définir l'image de base, ici nous héritons de l'image 7.2-apache
de php
.
Le COPY
va aller copier le contenu du dossier src
vers le répertoire /var/www/html/
.
Contenu:
#!/bin/bash
docker build -t res-http/apache-php .
Ce fichier permet de construire l'image Docker qui a été configurée dans le fichier Dockerfile
.
Le paramètre -t
permet de spécifier un nom à l'image, ici res-http/apache-php
.
Contenu:
#!/bin/bash
docker run -d -p 9090:80 res-http/apache-php
Ce fichier permet de créer un container sur l'image construite avec le script build-images.sh
.
Le paramètre -d
permet de lancer le container en arrière-plan.
Le paramètre -p
permet de faire du "port mapping" en spécifiant le port de la machine locale à utiliser (ici 9090
) et le port du service exécuté dans le container (ici 80
).
Nous voyons également que l'on reprend le nom de l'image construite (res-http/apache-php
).
-
Cloner le projet dans un répertoire
git clone git@github.com:Nono98/RES_2021_Labo4_HttpInfra.git
-
Se rendre dans le répertoire
RES_2021_Labo4_HttpInfra/docker-images/etape1-3/apache-php-image
et exécuter les scripts (en premier temps le scriptbuild-images.sh
)cd RES_2021_Labo4_HttpInfra/docker-images/etape1-3/apache-php-image ./build-images.sh ./run-container.sh
Cela va construire l'image et le container, pour donner une structure semblable à celle-ci:
-
Il faut maintenant récupérer l'IP de la machine locale (que l'on voit également dans la capture ci-dessus), afin de se connecter sur le serveur apache que l'on vient de lancer. Pour ce faire, il faut exécuter la commande suivante et localiser l'adresse de la machine.
ip addr
-
Pour se connecter, il faut aller sur un navigateur et taper l'adresse IP récupérée suivie de
:9090
dans la barre d'adresse. Par exemple: 192.168.1.116:9090On peut maintenant apercevoir le site Web:
On peut également aller plus loin en explorant quelque peu la configuration du serveur apache avec les étapes suivantes:
-
Récupérer le nom du container créé en tapant la commande:
docker ps
On obtient le résultat suivant:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d57f4407ee3c res-http/apache-php "docker-php-entrypoi…" 15 minutes ago Up 15 minutes 0.0.0.0:9090->80/tcp, :::9090->80/tcp
unruffled_turing
Le nom sera différent puisqu'il est généré aléatoirement.
-
Le nom récupéré va nous servir à se connecter directement sur le container avec la commande suivante:
docker exec -it unruffled_turing /bin/bash
Le nom du container
unruffled_turing
à remplacer par celui trouvé par la commande précédente.Nous sommes maintenant connecté directement sur la machine et pouvons exécuter les commandes souhaitées.
-
Il faut maintenant se rendre dans le répertoire
/etc/apache2
avec la commande:cd /etc/apache2
C'est ici que les fichiers de configuration se situent (que l'on peut voir avec la commande
ls
), notamment dans le répertoiresites-available
et le fichier000-default.conf
que l'on voit ci-dessous: -
Enfin, pour quitter le terminal, il suffit simplement d'exécuter la commande
exit
.
- Ecrire une application HTTP en Node.js, qui retourne un payload sur une requête GET
- Apprendre comment utiliser
Postman
pour tester des applications HTTP
Pour cette deuxième étape, l'infrastructure de l'image Docker se trouve dans le répertoire ./docker-images/etape1-3/express-image
.
Le dossier src
contient les fichiers sources nécessaires pour l'application JSON.
Contenu:
FROM node:15.13.0
COPY src/ /opt/app
CMD ["node", "/opt/app/index.js"]
Ce fichier permet de configurer l'image Docker du serveur apache httpd.
Le FROM
permet de définir l'image de base, ici nous héritons de l'image node
en version 15.13.0
.
Le COPY
va aller copier le contenu du dossier src
vers le répertoire /opt/app
.
Le CMD
permet de lancer une commande, ici node /opt/app/index.js
.
Contenu:
#!/bin/bash
docker build -t res-express .
Ce fichier permet de construire l'image Docker qui a été configurée dans le fichier Dockerfile
.
Le paramètre -t
permet de spécifier un nom à l'image, ici res-express
.
Contenu:
#!/bin/bash
docker run -p 9091:3000 res-express
Ce fichier permet de créer un container sur l'image construite avec le script build-images.sh
.
Le paramètre -p
permet de faire du "port mapping" en spécifiant le port de la machine locale à utiliser (ici 9091
) et le port du service exécuté dans le container (ici 3000
).
Nous voyons également que l'on reprend le nom de l'image construite (res-express
).
Notre application génère un certain nombre de lancé de dés (entre 0 et 10), et affiche le nombre de faces du dé ainsi que le résultat du lancé.
-
Cloner le projet dans un répertoire si cela n'a pas déjà été fait avec l'étape précédente
git clone git@github.com:Nono98/RES_2021_Labo4_HttpInfra.git
-
Se rendre dans le répertoire
RES_2021_Labo4_HttpInfra/docker-images/express-image
et exécuter les scripts (en premier temps le scriptbuild-images.sh
)cd RES_2021_Labo4_HttpInfra/docker-images/etape1-3/express-image ./build-images.sh ./run-container.sh
Cela va construire l'image et créer le container, pour donner une structure semblable à celle-ci:
-
Il faut maintenant récupérer l'IP de la machine locale (que l'on voit également dans la capture ci-dessus), afin de se connecter sur le serveur apache que l'on vient de lancer. Pour ce faire, il faut exécuter la commande suivante et localiser l'adresse de la machine.
ip addr
-
Pour se connecter, il faut aller sur un navigateur et taper l'adresse IP récupérée suivie de
:9091
dans la barre d'adresse. Par exemple: 192.168.1.116:9091On peut maintenant apercevoir le résultat, où
nbFaces
est le nombre de faces du dé, etresult
est le résultat du lancé:
- Utiliser apache httpd pour créer un reverse proxy
- S'assurer que toutes les requêtes HTTP passent par le reverse proxy
- Router les requêtes sur les applications apache http ou node.js en fonction du prefixe de l'URL
Pour cette troisième étape, l'infrastructure de l'image Docker se trouve dans le répertoire ./docker-images/etape1-3/apache-reverse-proxy-image
.
Le dossier conf
contient la configuration nécessaire pour le reverse proxy, notamment le fichier 001-reverse-proxy.conf
:
<VirtualHost *:80>
ServerName dices.res.ch
ProxyPass "/api/dices/" "http://172.17.0.3:3000/"
ProxyPassReverse "/api/dices/" "http://172.17.0.3:3000/"
ProxyPass "/" "http://172.17.0.2:80/"
ProxyPassReverse "/" "http://172.17.0.2:80/"
</VirtualHost>
Cela va permettre de faire les redirections vers les 2 containers contenant le site web statique et le site web dynamique, avec comme hôte de destination dices.res.ch
.
Contenu:
FROM php:7.2-apache
COPY conf/ /etc/apache2
RUN a2enmod proxy proxy_http
RUN a2ensite 000-* 001-*
Ce fichier permet de configurer l'image Docker du serveur apache reverse proxy.
Le FROM
permet de définir l'image de base, ici nous héritons de l'image 7.2-apache
de php
.
Le COPY
va aller copier le contenu du dossier conf
vers le répertoire /etc/apache2
.
Les commandes RUN
permettent d'appliquer la configuration.
Contenu:
#!/bin/bash
cd ../apache-php-image
./build-images.sh
cd ../express-image
./build-images.sh
cd ../apache-reverse-proxy-image
docker build -t res-apache-rp .
Ce fichier permet de construire les 3 images Docker nécessaires afin de s'assurer qu'elles soient bien toutes créées.
Le paramètre -t
permet de spécifier un nom à l'image, ici res-apache-rp
.
Contenu:
#!/bin/bash
docker run -d --name apache-static res-http/apache-php
docker run -d --name express-dynamic res-express
docker run -d -p 9093:80 res-apache-rp
Ce fichier permet de créer les 3 containers sur les images construites avec le script build-images.sh
.
Le paramètre -p
permet de faire du "port mapping" en spécifiant le port de la machine locale à utiliser (ici 9093
) et le port du service exécuté dans le container (ici 80
).
Nous voyons également que l'on reprend le nom de l'image construite (res-apache-rp
).
-
Cloner le projet dans un répertoire si cela n'a pas déjà été fait avec les étapes précédentes
git clone git@github.com:Nono98/RES_2021_Labo4_HttpInfra.git
-
S'assurer qu'il n'y ait aucun container lancé concernant les étapes 1 et 2 en exécutant la commande:
docker ps
Si il y en a, alors il faut le(s) supprimer avec la commande:
docker kill "nom du container"
Où le nom du container est celui trouvé avec la commande
docker ps
. (Voir démonstration étape 1, point 5)Puis pour bien tous les supprimer, exécuter:
docker rm `docker ps -qa`
-
Exécuter le script de construction d'image pour les 3 containers et lancer les différents containers nécessaires:
cd RES_2021_Labo4_HttpInfra/docker-images/etape1-3/apache-reverse-proxy-image ./build-images.sh ./run-container.sh
Il faudra bien vérifier que les adresses IP des containers soient
172.17.0.2
et172.17.0.3
. C'est la partie fragile de notre implémentation puisque nous ne gérons actuellement pas l'attribution des adresses IP.Cela va construire les images et créer les container, pour donner une structure semblable à celle-ci:
-
Ajouter une entrée dans le fichier
hosts
du système (/etc/hosts
sur Linux)192.168.1.116 dices.res.ch
Où
192.168.1.116
est l'adresse IP de la machine locale, voir étape 1 point 3 pour la récupérer. -
Accéder aux sites via le navigateur
- Utiliser JQuery pour faire une requête AJAX
Pour cette quatrième étape, l'infrastructure des images Docker se trouve dans le répertoire ./docker-images/etape4
.
Dans les 3 fichiers Dockerfile des images, cette ligne a été rajoutée afin de pouvoir utiliser l'application nano et faire des tests directement sur le container:
RUN apt-get update && apt-get install -y nano
2 lignes ont été rajoutées en fin de body
afin de pouvoir exécuter les requêtes AJAX
:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script src="assets/js/dices.js"></script>
Ce fichier a été créé afin d'y insérer le script JQuery, permettant de générer de nouveaux lancés de dés via le site dynamique toute les 2 secondes. Ce script est:
$(function() {
console.log("Loading dices");
function loadDices() {
$.getJSON( "/api/dices/", function( dices ) {
console.log(dices);
var message = "No dices";
if ( dices.length > 0 ) {
message = "Nombre de faces: " + dices[0].nbFaces + ", Resultat: " + dices[0].result;
}
$(".resultDice").text(message);
});
};
loadDices();
setInterval( loadDices, 2000 );
});
-
Cloner le projet dans un répertoire si cela n'a pas déjà été fait avec les étapes précédentes
git clone git@github.com:Nono98/RES_2021_Labo4_HttpInfra.git
-
Arrêter l'exécution et supprimer les 3 containers créés à l'étape précédente si cela a été le cas.
docker kill apache-rp docker kill express-dynamic docker kill apache-static docker rm `docker ps -qa`
-
Relancer les 3 containers après avoir recréé les images
cd RES_2021_Labo4_HttpInfra/docker-images/etape4/apache-reverse-proxy-image ./build-images.sh ./run-container.sh
La configuration générée est la même qu'à l'étape suivante.
-
Accéder au site via un navigateur et observer le lancement des dés:
- Se débarasser des adresses IP codées en dur dans la configuration reverse proxy
Pour cette cinquième étape, l'infrastructure des images Docker se trouve dans le répertoire ./docker-images/etape5
.
La dernière ligne du fichier a été supprimée. Le container reverse proxy doit maintenant être lancé "à la main", à voir dans la démonstration un peu plus bas. C'est grâce à cela que nous pouvons gérer les adresses IP dynamiquement pour effectuer le reverse proxy.
Contenu:
<?php
$static_app = getenv('STATIC_APP');
$dynamic_app = getenv('DYNAMIC_APP');
?>
<VirtualHost *:80>
ServerName dices.res.ch
ProxyPass '/api/dices/' 'http://<?php print "$dynamic_app"?>/'
ProxyPassReverse '/api/dices/' 'http://<?php print "$dynamic_app"?>/'
ProxyPass '/' 'http://<?php print "$static_app"?>/'
ProxyPassReverse '/' 'http://<?php print "$static_app"?>/'
</VirtualHost>
Ce fichier permet via du PHP de récupérer les variables d'environnement lors du lancement du container et de les insérer dans du texte qui sera récupéré ensuite.
Contenu:
#!/bin/bash
set -e
: "${APACHE_CONFDIR:=/etc/apache2}"
: "${APACHE_ENVVARS:=$APACHE_CONFDIR/envvars}"
if test -f "$APACHE_ENVVARS"; then
. "$APACHE_ENVVARS"
fi
# Apache gets grumpy about PID files pre-existing
: "${APACHE_RUN_DIR:=/var/run/apache2}"
: "${APACHE_PID_FILE:=$APACHE_RUN_DIR/apache2.pid}"
rm -f "$APACHE_PID_FILE"
echo "Setup for the RES lab"
echo "Static App URL: $STATIC_APP"
echo "Dynamic App URL: $DYNAMIC_APP"
php /var/apache2/templates/config-template.php > /etc/apache2/sites-available/001-reverse-proxy.conf
rm -f /var/run/apache2/apache2.pid
exec apache2 -DFOREGROUND
Ce fichier a été créé afin de récupérer la configuration générée par le fichier PHP et de la mettre dans le fichier de configuration du reverse proxy.
Deux lignes ont été rajoutées dans ce fichiers:
COPY apache2-foreground /usr/local/bin/
COPY templates /var/apache2/templates
Elles permettent d'aller coper les 2 fichiers créés dans cette étape dans le container directement.
-
Cloner le projet dans un répertoire si cela n'a pas déjà été fait avec les étapes précédentes
git clone git@github.com:Nono98/RES_2021_Labo4_HttpInfra.git
-
Arrêter l'exécution et supprimer les 3 containers créés à l'étape précédente si cela a été le cas.
docker kill apache-rp docker kill express-dynamic docker kill apache-static docker rm `docker ps -qa`
-
Relancer les 3 containers après avoir recréé les images
cd RES_2021_Labo4_HttpInfra/docker-images/etape5/apache-reverse-proxy-image ./build-images.sh ./run-container.sh docker run -d -e STATIC_APP=172.17.0.2:80 -e DYNAMIC_APP=172.17.0.3:3000 -p 9093:80 --name apache-rp res-apache-rp
Vérifier les adresses IP en exécutant la commande ci-dessous et remplacer les si nécessaire:
docker inspect apache-static | grep -i ipaddr # Pour la variable STATIC_APP docker inspect express-dynamic | grep -i ipaddr # Pour la variable DYNAMIC_APP
Cela va créer la structure suivante:
-
Accéder au site via un navigateur et observer que le site fonctionne même si les adresses IP sont différentes:
- Configurer le serveur apache reverse proxy afin de pouvoir faire du load balancing sur différents containers
Pour cette première étape additionnelle, l'infrastructure des images Docker se trouve dans le répertoire ./docker-images/etapeAdd1
.
L'image du site statique a été dupliquée afin de pouvoir voir une différence et s'assurer que le load balancing fonctionne.
Contenu:
<?php
$static_app_01 = getenv('STATIC_APP_01');
$static_app_02 = getenv('STATIC_APP_02');
$dynamic_app_01 = getenv('DYNAMIC_APP_01');
$dynamic_app_02 = getenv('DYNAMIC_APP_02');
?>
<VirtualHost *:80>
ServerName dices.res.ch
<Proxy balancer://dynamic_app>
BalancerMember 'http://<?php print "$dynamic_app_01"?>'
BalancerMember 'http://<?php print "$dynamic_app_02"?>'
</Proxy>
<Proxy balancer://static_app>
BalancerMember 'http://<?php print "$static_app_01"?>'
BalancerMember 'http://<?php print "$static_app_02"?>'
</Proxy>
ProxyPass '/api/dices/' 'balancer://dynamic_app/'
ProxyPassReverse '/api/dices/' 'balancer://dynamic_app/'
ProxyPass '/' 'balancer://static_app/'
ProxyPassReverse '/' 'balancer://static_app/'
</VirtualHost>
Ce fichier a été modifié afin de pouvoir faire le load balancing. Des balancer
ont été ajouté, et les variables de récupération des variables d'environnement ont été modifiées.
Contenu:
FROM php:7.2-apache
RUN apt-get update && apt-get install -y nano
COPY apache2-foreground /usr/local/bin/
COPY templates /var/apache2/templates
COPY conf/ /etc/apache2
RUN a2enmod proxy proxy_http proxy_balancer lbmethod_byrequests
RUN a2ensite 000-* 001-*
Les paramètres proxy_balancer
et lbmethod_byrequests
ont été ajoutés à la commande RUN a2enmod
afin de permettre au proxy de faire le load balancing.
Contenu:
#!/bin/bash
cd ../apache-php-image-01
./build-images.sh
cd ../apache-php-image-02
./build-images.sh
cd ../express-image
./build-images.sh
cd ../apache-reverse-proxy-image
docker build -t res-apache-rp .
Ce fichier a été modifié afin de construire les 2 images des sites statiques sépraément.
Contenu:
#!/bin/bash
docker run -d --name apache-static-01 res-http/apache-php-01
docker run -d --name apache-static-02 res-http/apache-php-02
docker run -d --name express-dynamic-01 res-express
docker run -d --name express-dynamic-02 res-express
Ce fichier a été modifié afin de lancer les 4 containers des sites statiques et dynamiques.
-
Cloner le projet dans un répertoire si cela n'a pas déjà été fait avec les étapes précédentes
git clone git@github.com:Nono98/RES_2021_Labo4_HttpInfra.git
-
Arrêter l'exécution et supprimer les 3 containers créés à l'étape précédente si cela a été le cas.
docker kill apache-rp docker kill express-dynamic docker kill apache-static docker rm `docker ps -qa`
-
Lancer les 5 containers après avoir recréé les images
cd RES_2021_Labo4_HttpInfra/docker-images/etapeAdd1/apache-reverse-proxy-image ./build-images.sh ./run-container.sh docker run -d -e STATIC_APP_01=172.17.0.2:80 -e STATIC_APP_02=172.17.0.3:80 -e DYNAMIC_APP_01=172.17.0.4:3000 -e DYNAMIC_APP_02=172.17.0.5:3000 -p 9093:80 --name apache-rp res-apache-rp
Vérifier les adresses IP en exécutant la commande ci-dessous et remplacer les si nécessaire:
docker inspect apache-static-01 | grep -i ipaddr # Pour la variable STATIC_APP_01 docker inspect apache-static-02 | grep -i ipaddr # Pour la variable STATIC_APP_02 docker inspect express-dynamic-01 | grep -i ipaddr # Pour la variable DYNAMIC_APP_01 docker inspect express-dynamic-02 | grep -i ipaddr # Pour la variable DYNAMIC_APP_02
Cela va créer la structure suivante:
-
Accéder au site via un navigateur et observer que le load balancing fonctionne à l'aide du
(01)
et(02)
dans le titre de bienvenue:Site web statique 01:
Site web statique 02:
- Améliorer le load balancing de l'étape précédente en utilisant des "sticky sessions"
Pour cette deuxième étape additionnelle, l'infrastructure des images Docker se trouve dans le répertoire ./docker-images/etapeAdd2
.
Contenu:
<?php
$static_app_01 = getenv('STATIC_APP_01');
$static_app_02 = getenv('STATIC_APP_02');
$dynamic_app_01 = getenv('DYNAMIC_APP_01');
$dynamic_app_02 = getenv('DYNAMIC_APP_02');
?>
<VirtualHost *:80>
ServerName dices.res.ch
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://dynamic_app>
BalancerMember 'http://<?php print "$dynamic_app_01"?>'
BalancerMember 'http://<?php print "$dynamic_app_02"?>'
</Proxy>
<Proxy balancer://static_app>
BalancerMember 'http://<?php print "$static_app_01"?>' route=1
BalancerMember 'http://<?php print "$static_app_02"?>' route=2
ProxySet lbmethod=byrequests
ProxySet stickysession=ROUTEID
</Proxy>
ProxyPass '/api/dices/' 'balancer://dynamic_app/'
ProxyPassReverse '/api/dices/' 'balancer://dynamic_app/'
ProxyPass '/' 'balancer://static_app/'
ProxyPassReverse '/' 'balancer://static_app/'
</VirtualHost>
Ce fichier a été modifié afin de pouvoir utiliser les "sticky sessions". Un Header a été ajouté pour les cookies, ainsi que la ligne ProxySet stickysession=ROUTED
dans la balise Proxy balancer://static_app
. Des id de route ont été ajouté également pour les deux BalancerMember
des sites statiques.
Contenu:
FROM php:7.2-apache
RUN apt-get update && apt-get install -y nano
COPY apache2-foreground /usr/local/bin/
COPY templates /var/apache2/templates
COPY conf/ /etc/apache2
RUN a2enmod proxy proxy_http proxy_balancer lbmethod_byrequests headers
RUN a2ensite 000-* 001-*
Le paramètres headers
a été ajouté à la commande RUN a2enmod
.
-
Cloner le projet dans un répertoire si cela n'a pas déjà été fait avec les étapes précédentes
git clone git@github.com:Nono98/RES_2021_Labo4_HttpInfra.git
-
Arrêter l'exécution et supprimer les 5 containers créés à l'étape précédente si cela a été le cas.
docker kill apache-rp docker kill express-dynamic-01 docker kill express-dynamic-02 docker kill apache-static-01 docker kill apache-static-02 docker rm `docker ps -qa`
-
Lancer les 5 containers après avoir recréé les images
cd RES_2021_Labo4_HttpInfra/docker-images/etapeAdd2/apache-reverse-proxy-image ./build-images.sh ./run-container.sh docker run -d -e STATIC_APP_01=172.17.0.2:80 -e STATIC_APP_02=172.17.0.3:80 -e DYNAMIC_APP_01=172.17.0.4:3000 -e DYNAMIC_APP_02=172.17.0.5:3000 -p 9093:80 --name apache-rp res-apache-rp
Vérifier les adresses IP en exécutant la commande ci-dessous et remplacer les si nécessaire:
docker inspect apache-static-01 | grep -i ipaddr # Pour la variable STATIC_APP_01 docker inspect apache-static-02 | grep -i ipaddr # Pour la variable STATIC_APP_02 docker inspect express-dynamic-01 | grep -i ipaddr # Pour la variable DYNAMIC_APP_01 docker inspect express-dynamic-02 | grep -i ipaddr # Pour la variable DYNAMIC_APP_02
Cela va créer la même structure que pour la première étape additionnelle.
-
Accéder au site via un navigateur:
On peut observer que l'on accède au site statique 01 à l'aide de l'indicateur dans le titre de bienvenue:
Nous pouvons rafraîchir la page à de nombreuses reprises, nous allons rester sur ce serveur.
Par contre, si on utilise un autre navigateur et que l'on se connecte au site, on va accéder au site statique 02:
Encore une fois, si on rafraîchit la page à de nombreuses reprises, nous restons sur ce serveur. Le "sticky session" est donc fonctionnel.
- Avoir une interface pour visionner les clusters
Pour cette troisième étape additionnelle, l'infrastructure des images Docker se trouve dans le répertoire ./docker-images/etapeAdd3
.
Code ajouté:
<Location "/balancer-manager/">
SetHandler balancer-manager
</Location>
ProxyPass '/balancer-manager/' !
Seules ces lignes de code permettent d'accéder à une interface pour visualiser la configuration.
-
Cloner le projet dans un répertoire si cela n'a pas déjà été fait avec les étapes précédentes
git clone git@github.com:Nono98/RES_2021_Labo4_HttpInfra.git
-
Arrêter l'exécution et supprimer les 5 containers créés à l'étape précédente si cela a été le cas.
docker kill apache-rp docker kill express-dynamic-01 docker kill express-dynamic-02 docker kill apache-static-01 docker kill apache-static-02 docker rm `docker ps -qa`
-
Lancer les 5 containers après avoir recréé les images
cd RES_2021_Labo4_HttpInfra/docker-images/etapeAdd3/apache-reverse-proxy-image ./build-images.sh ./run-container.sh docker run -d -e STATIC_APP_01=172.17.0.2:80 -e STATIC_APP_02=172.17.0.3:80 -e DYNAMIC_APP_01=172.17.0.4:3000 -e DYNAMIC_APP_02=172.17.0.5:3000 -p 9093:80 --name apache-rp res-apache-rp
Vérifier les adresses IP en exécutant la commande ci-dessous et remplacer les si nécessaire:
docker inspect apache-static-01 | grep -i ipaddr # Pour la variable STATIC_APP_01 docker inspect apache-static-02 | grep -i ipaddr # Pour la variable STATIC_APP_02 docker inspect express-dynamic-01 | grep -i ipaddr # Pour la variable DYNAMIC_APP_01 docker inspect express-dynamic-02 | grep -i ipaddr # Pour la variable DYNAMIC_APP_02
Cela va créer la même structure que pour la première étape additionnelle.
-
Accéder au site
dices.res.ch:9093/balancer-manager
via un navigateur:
- Utiliser une interface utilisateur pour pouvoir gérer les containers plus facilement
Tout est dans la démo, aucun fichier ajouté ou modifié pour cette étape.
-
Cloner le projet dans un répertoire si cela n'a pas déjà été fait avec les étapes précédentes
git clone git@github.com:Nono98/RES_2021_Labo4_HttpInfra.git
-
Arrêter l'exécution et supprimer les 5 containers créés à l'étape précédente si cela a été le cas.
docker kill apache-rp docker kill express-dynamic-01 docker kill express-dynamic-02 docker kill apache-static-01 docker kill apache-static-02 docker rm `docker ps -qa`
-
Lancer les 5 containers après avoir recréé les images
cd RES_2021_Labo4_HttpInfra/docker-images/etapeAdd3/apache-reverse-proxy-image ./build-images.sh ./run-container.sh docker run -d -e STATIC_APP_01=172.17.0.2:80 -e STATIC_APP_02=172.17.0.3:80 -e DYNAMIC_APP_01=172.17.0.4:3000 -e DYNAMIC_APP_02=172.17.0.5:3000 -p 9093:80 --name apache-rp res-apache-rp
Vérifier les adresses IP en exécutant la commande ci-dessous et remplacer les si nécessaire:
docker inspect apache-static-01 | grep -i ipaddr # Pour la variable STATIC_APP_01 docker inspect apache-static-02 | grep -i ipaddr # Pour la variable STATIC_APP_02 docker inspect express-dynamic-01 | grep -i ipaddr # Pour la variable DYNAMIC_APP_01 docker inspect express-dynamic-02 | grep -i ipaddr # Pour la variable DYNAMIC_APP_02
Cela va créer la même structure que pour la première étape additionnelle.
-
Exécuter la commande suivante pour générer le Docker contenant l'image de l'interface de gestion des containers (
Portainer
):docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
-
Accéder au site
localhost:9000
via un navigateur, cela va demander un login et mot de passe: -
Sur la page suivante, choisir l'option
Local
, puis sélectionner la seule configuration existante (local
), pour finalement choisir de voir les containers. -
On arrive désormais sur la page de gestion des containers où l'on peut tout gérer facilement: