Dans cet exemple nous créons un réseau bridge sur lequel nous connectons 3 conteneurs :
- wit-blue
- wit-pink
- nginx
Seul le conteneur nginx sera exposé sur le port 80 et nginx va appliquer les règles suivantes :
- le trafic arrivant sur le path
/blue
sera routé vers le servicewit-blue
- le trafic arrivant sur le path
/pink
sera routé vers le servicewit-pink
Nous utiliserons ce fichier de configuration Nginx :
nginx.conf
ouvrir
events {
}
http {
server {
listen 80;
listen [::]:80;
access_log /var/log/nginx/reverse-access.log;
error_log /var/log/nginx/reverse-error.log;
location /blue {
proxy_pass http://wit-blue:8080;
}
location /pink {
proxy_pass http://wit-pink:8080;
}
}
}
Voici le script permettant de dérouler l’exemple :
demo-up
ouvrir
echo "Deploying network and containers..."
docker network create --driver bridge wit-net
docker run -d \
--name wit-blue \
--env COLOR=lightblue \
--network wit-net \
xian310/who-is-there:21
docker run -d \
--name wit-pink \
--env COLOR=pink \
--network wit-net \
xian310/who-is-there:21
docker run -d \
--name nginx \
--network wit-net \
--publish 8000:80 \
-v $(pwd)/nginx.conf:/etc/nginx/nginx.conf:ro \
nginx:1.21.3
sleep 2
docker ps
echo
echo "Waiting 10 seconds..."
sleep 10
echo
echo "Access to the APIs"
nginx_internal_ip=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nginx)
for url in "$nginx_internal_ip:80/blue" "$nginx_internal_ip:80/pink" "127.0.0.1:8000/blue" "127.0.0.1:8000/pink"
do
echo
echo "curl $url"
curl "$url"
done
Pour lancer la démo jouer la commande suivante :
bash demo-up
Et le script de nettoyage :
demo-down
ouvrir
echo "Destroying the stack..."
sleep 10
docker rm -f wit-blue wit-pink nginx
docker network rm wit-net
docker ps
Pour lancer le nettoyage :
bash demo-down