Aller au contenu principal

TP 3 Volume et réseau

Objectif

On va monter notre webapp en réseau avec un redis "stateful".

On va donc créer à la main les éléments nécessaires pour avoir une application persistante.


Étapes

  • Action : Créer un volume Docker nommé "redis_data".
    Observation : Le volume "redis_data" apparaît dans la liste des volumes Docker (docker volume ls).

  • Action : Créer un réseau Docker nommé "my_app".
    Observation : Le réseau "my_app" est listé parmi les réseaux Docker (docker network ls).

  • Action : Lancer un conteneur Redis en utilisant le volume "redis_data" et le connecter au réseau "my_app".
    Observation : Le conteneur Redis est en cours d'exécution dans le réseau "my_app" (docker ps), et le volume "redis_data" est monté correctement (docker inspect).

  • Action : Lancer l'application Flask "myfirstapp" construite dans le TP précédent dans le réseau "my_app", en utilisant "redis" comme nom d'hôte pour Redis dans les variables d'environnement, et exposer l'application sur le port 80.
    Observation : L'application Flask est accessible via http://localhost:80 et peut communiquer avec le conteneur Redis.

  • Action : Cliquer sur le bouton de l'application pour voir l'incrémentation.
    Observation : On peut voir le contenu de la base redis avec la commande docker exec -it redis redis-cli get counter

  • Action : Détruire et recréer le conteneur redis pour confirmer que la base de données est bien persistée.
    Observation : On peut voir le contenu de la base redis avec la commande docker exec -it redis redis-cli get counter

Avancé

  • Utiliser docker exec pour se connecter aux conteneurs en cours d'exécution et tester manuellement la connectivité réseau avec ping.
  • Idem avec des requêtes DNS.
  • Identifier quelle stratégie de backup serait recommandée pour notre base redis.
  • Ajouter les stratégies de restart=always et observer ce qui se passe quand on tue un process docker.

Solution

Afficher
  • Créer un volume Docker : docker volume create redis_data
  • Créer un réseau Docker : docker network create my_app
  • Lancer Redis avec le volume et le réseau :
    docker run -d --name redis --network my_app -v redis_data:/data redis
  • Lancer l'application Flask dans le réseau, en exposant le port 80 :
    docker run -d --name flask_app --network my_app -e REDIS_HOST=redis -p 80:3000 myfirstapp:1.0