Déploiement d'une appli web conteneurisée sur Amazon Lightsail

GUIDE DE DÉMARRAGE

Module 1 : Préparation de votre conteneur

Dans ce module, nous allons créer une application web conteneurisée simple

Introduction

Dans ce module, nous passerons en revue l'exemple d'application fourni avec ce guide.  Nous parcourrons la création d'un conteneur pour exécuter localement l'application web fournie et tester l'application web sur notre ordinateur portable local avant de le déployer vers le cloud.

Ce que vous apprendrez

  • Création d'un conteneur pour une application web existante
  • Exécution d'un conteneur pour tester une application localement

Prérequis

Pour pouvoir démarrer ce guide, vous aurez besoin de ce qui suit :

  • Docker Desktop installé
  • Connaissances pratiques de base des commandes Docker

 Durée

10 minutes

 Prérequis du module

  • Compte AWS avec accès administrateur**
  • Dernière version de Chrome ou de Firefox (recommandé)

[**]Les comptes créés au cours des dernières 24 heures n'ont sans doute pas encore accès aux services requis pour ce didacticiel.

Implémentation

Création de l'appli client

L'application web fournie dans le dossier de code est une application web développée avec le cadre d'application Flask pour Python.

En quelques mots, le cadre Flask inclut un mini-serveur pour recevoir les requêtes HTTP, un mécanisme de routage pour associer les requêtes spécifiques (un verbe HTTP et un /chemin) à votre code Python, et un moteur de création de modèles pour générer le HTML final.

Une bonne pratique consiste à disposer d'un serveur web dédié devant votre application Flask. Le serveur web est configuré pour servir du contenu statique, tel que des images, des feuilles de style (CSS) et des fichiers JavaScript (JS). Le serveur web transfère toutes les autres requêtes à votre application Flask. Pour ce guide, nous choisissons d'utiliser le serveur web Nginx.

La communication entre Nginx et l'appli Flask est assurée par un protocole uWSGI. Le composant uWSGI est fourni par Flask.

La configuration de l'application est illustrée dans cette image.

gsg-build-lightsail-5

L'application se compose des fichiers suivants :

  • application.py constitue le cœur de l'application, il définit la logique, la communication avec un backend, s'il y en a, etc.
  • Pipfile répertorie les dépendances Python de l'application web.
  • Dockerfile configure le conteneur. Il commence à partir d'un conteneur Nginx officiel, ajoute Python, Flask et ses dépendances. Ensuite, il copie le fichier de configuration Nginx et un script de démarrage.
  • nginx-app.conf est le fichier de configuration Nginx. Il veille à ce que le contenu statique soit servi par Nginx tandis que les autres requêtes sont transmises à uWSGI/Flask
  • start.sh démarre les démons Nginx et uWSGI.

L'application est une application web simple visant à annoncer le lancement d'un nouveau service ou produit et compte un formulaire pour collecter les préinscriptions.

Téléchargement du projet

Pour créer et tester le conteneur, téléchargez une copie locale du projet.

Ouvrez un terminal et entrez les commandes suivantes :

git clone https://github.com/aws-developer-center/dev-center-guides/

cd dev-center-guides/GS_003_web_app_lightsail/code

À partir de maintenant, toutes les commandes supposent que vous avez navigué dans ce répertoire.

Création de votre conteneur

Maintenant que vous avez une bonne idée des principaux composants de l'application et de la manière dont ils fonctionnent ensemble, créons un conteneur.

Pour créer l'application dans un conteneur, utilisez votre terminal et entrez les commandes suivantes :

# Assuming you navigated to the application directory as instructed above 
# Make sure to include the space and period after signup in the below command

docker build -t demo-flask-signup .


Après quelques minutes (en fonction de votre bande passante Internet), le conteneur est créé.

Vous pouvez répertorier toutes les images de conteneur sur votre système à l'aide de la commande suivante :

docker images

# It should output something similar to 

REPOSITORY          TAG       IMAGE ID       CREATED          SIZE
demo-flask-signup   latest    26d7924c5980   28 minutes ago   640MB
(...)

Test de votre conteneur

Pour tester le conteneur sur votre ordinateur local, démarrez d'abord le conteneur, puis pointez un navigateur vers celui-ci.

docker run -p 8080:80               \
           --rm                     \
           -v ~/.aws:/root/.aws     \
           demo-flask-signup:latest

Les options transmises à la commande d'exécution Docker sont les suivantes :

  • -p 8080:80 pour relier le port TCP 8080 de votre ordinateur local au port 80 du conteneur (Nginx)
  • --rm pour demander à Docker de supprimer le conteneur lorsqu'il s'arrête
  • -v ~/.aws:/root/.aws pour mapper la configuration de l'AWS CLI de votre ordinateur local dans le répertoire ~/.aws vers le répertoire du conteneur /root/.aws
  • Enfin, demo-flask-signup:latest – le nom et la balise du conteneur que nous venons de créer.

Maintenant que le conteneur est exécuté, ouvrez un navigateur et pointez-le vers http://localhost:8080. Vous devriez voir l'écran d'accueil de l'application reprenant le nouveau nom de ville.

gsg-build-lightsail-1

Félicitations ! Vous disposez d'un conteneur prêt à être déployé dans le cloud.

Conclusion

Dans ce premier module, nous avons créé une application de conteneur très simple et l'avons exécutée localement pour nous assurer qu'elle fonctionne. Dans le module suivant, vous apprendrez à créer un service de conteneur Amazon Lightsail.

À suivre : création d'une infrastructure

Dites-nous si nous avons répondu à vos attentes.

Nous vous remercions pour votre commentaire
Nous sommes ravis que cette page vous ait été utile. Souhaitez-vous partager des détails supplémentaires pour nous aider à continuer à nous améliorer ?
Fermer
Nous vous remercions pour votre commentaire
Nous sommes désolés que cette page ne vous ait pas été utile. Souhaitez-vous partager des détails supplémentaires pour nous aider à continuer à nous améliorer ?
Fermer