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

GUIDE DE DÉMARRAGE

Module 3 : Déploiement d'un conteneur

Dans ce module, nous déploierons notre conteneur vers le cloud

Introduction

Maintenant que votre service de conteneur Amazon Lightsail est prêt, l'étape suivante consiste à déployer votre conteneur.

Amazon Lightsail est en mesure de déployer des conteneurs à partir de référentiels d'image de conteneur publics tels que Docker Hub, Amazon ECR Public Gallery ou votre ordinateur local.

Dans ce guide, nous déploierons directement à partir de votre ordinateur local.

Ce que vous apprendrez

  • Comment envoyer une image de conteneur locale vers Amazon Lightsail
  • Comment déployer une version de votre image de conteneur sur un service de conteneur

 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

Envoi d'une image de conteneur locale

La première étape du déploiement d'un conteneur consiste à envoyer une image de conteneur vers Amazon Lightsail

Ouvrez un terminal dans le répertoire dans lequel vous avez créé votre conteneur et entrez la commande ci-dessous. Veillez à utiliser la même région que celle créée dans votre service de conteneur Lightsail.

aws lightsail push-container-image    \
    --region eu-west-3                \
    --service-name signup-application \
    --label latest                    \
    --image demo-flask-signup:latest

# the command outputs the following lines
f017a6ddb209: Pushed 
b94dee417b5e: Pushed 
37d77b23a488: Pushed 
8e77a3b871e7: Pushed 
4bc5d67b6427: Pushed 
ce8ffb5c560e: Pushed 
4226d5d0360f: Pushed 
9d1af766c818: Pushed 
d97733c0a3b6: Pushed 
c553c6ba5f13: Pushed 
48b4a40de359: Pushed 
ace9ed9bcfaf: Pushed 
764055ebc9a7: Pushed 
Digest: sha256:128f84907d30a1fb47c1888720485fa8050cc99bc1034e0cfd1f46d3b6e57e19
Image "demo-flask-signup:latest" registered.
Refer to this image as ":signup-application.latest.1" in deployments.    

La commande appelle docker push pour télécharger votre image vers Amazon Lightsail. Cela peut prendre quelques minutes, en fonction de la bande passante de votre réseau.

La dernière ligne du résultat indique le nom interne de votre conteneur, dans notre cas il s'agit de :signup-application.latest.1. Notez-le car nous aurons besoin de ce nom pour déployer le conteneur sur le service de conteneur. Si vous souhaitez accéder ultérieurement au nom du conteneur, vous pouvez entrer la commande suivante :

aws lightsail get-container-images    \
    --region eu-west-3                \
    --service-name signup-application

# the command outputs the following lines
{
    "containerImages": [
        {
            "image": ":signup-application.latest.1",
            "digest": "sha256:128f84907d30a1fb47c1888720485fa8050cc99bc1034e0cfd1f46d3b6e57e19",
            "createdAt": "2021-07-17T15:11:49+02:00"
        }
    ]
}  

Envoi d'une image de conteneur locale à LightSail

Maintenant que l'image de conteneur est stockée dans Amazon Lightsail, nous pouvons déployer cette image dans le service de conteneur.

Lightsail a besoin des informations suivantes pour créer un déploiement :

  • Le nom de l'image de conteneur à déployer (:signup-application.latest.1 comme renvoyé par la commande précédente)
  • Le port réseau exposé par le conteneur (comme décrit dans la configuration Dockerfile)
  • (facultatif) Détails d'un point de terminaison réseau accessible publiquement : un numéro de port et un protocole TCP, l'IP sera attribuée automatiquement.

Toutes ces informations sont stockées dans un fichier JSON que vous devez créer avant le déploiement.

Créez un fichier JSON nommé lc.json. Si vous travaillez à partir du code téléchargé, vous modifierez le fichier lc.json existant qui se trouve dans le même répertoire que votre conteneur. Copiez le json suivant dans le fichier :

{
    "serviceName": "signup-application",
    "containers": {
        "signup-app-container": {
            "image": ":signup-application.latest.1",
            "ports": {
                "80": "HTTP"
            }
        }
    },
    "publicEndpoint": {
        "containerName": "signup-app-container",
        "containerPort": 80
    }
}

Ensuite, déployez le conteneur en entrant la commande suivante :

aws lightsail create-container-service-deployment \
    --region eu-west-3                            \
    --cli-input-json file://lc.json

# the command outputs the following 

{
    "containerService": {
        "containerServiceName": "signup-application",
        "arn": "arn:aws:lightsail:eu-west-3:012345678901:ContainerService/528a0bcf-fd14-42d4-a09a-943a241adc51",
        "createdAt": "2021-07-17T13:38:40+02:00",
        "location": {
            "availabilityZone": "all",
            "regionName": "eu-west-3"
        },
        "resourceType": "ContainerService",
        "tags": [],
        "power": "nano",
        "powerId": "nano-1",
        "state": "DEPLOYING",
        "scale": 2,
        "nextDeployment": {
            "version": 1,
            "state": "ACTIVATING",
            "containers": {
                "signup-app-container": {
                    "image": ":signup-application.latest.1",
                    "command": [],
                    "environment": {},
                    "ports": {
                        "80": "HTTP"
                    }
                }
            },
            "publicEndpoint": {
                "containerName": "signup-app-container",
                "containerPort": 80,
                "healthCheck": {
                    "healthyThreshold": 2,
                    "unhealthyThreshold": 2,
                    "timeoutSeconds": 2,
                    "intervalSeconds": 5,
                    "path": "/",
                    "successCodes": "200-499"
                }
            },
            "createdAt": "2021-07-17T15:31:01+02:00"
        },
        "isDisabled": false,
        "principalArn": "arn:aws:iam::577312533299:role/amazon/lightsail/eu-west-3/containers/signup-application/1jetjd21p8qshe57seuh71tnrnn29ps77lnno20sbgl2ghbuc0r0",
        "privateDomainName": "signup-application.service.local",
        "url": "https://signup-application.me04fvc6dbk4e.eu-west-3.cs.amazonlightsail.com/"
    }
}

Notez le statut "state": "DEPLOYING"  (« état » : « DÉPLOIEMENT »). Après quelques instants, l'état passe à ACTIVE (ACTIF). Le déploiement dure quelques minutes. Vous pouvez vérifier l'état de votre déploiement à l'aide de la commande suivante :

# while deploying
aws lightsail get-container-services      \
    --region eu-west-3                    \
    --query "containerServices[].nextDeployment.state"

# once deployed
aws lightsail get-container-services      \
    --region eu-west-3                    \
    --query "containerServices[].currentDeployment.state" 

Test de votre déploiement

Pour tester votre déploiement, retrouvez d'abord l'URL que Lightsail vous a créée. Ouvrez un terminal et entrez la commande suivante :

aws lightsail get-container-services        \
    --region eu-west-3                      \
    --query "containerServices[].url" 

# the command outputs something like the below 
[
    "https://signup-application.me04fvc6dbk4e.eu-west-3.cs.amazonlightsail.com/"
]

Ouvrez votre navigateur de votre choix et pointez-le vers votre URL de déploiement.

gsg-build-lightsail-3

Autrement, vous pouvez utiliser cURL pour tester le point de terminaison à partir de la ligne de commande :

curl -I https://signup-application.me04fvc6dbk4e.eu-west-3.cs.amazonlightsail.com/

HTTP/2 200 
date: Sat, 17 Jul 2021 13:38:04 GMT
content-type: text/html; charset=utf-8
content-length: 4579
server: nginx/1.21.1

Félicitations ! Votre conteneur est désormais déployé dans Amazon Lightsail.

Conclusion

Dans ce guide, vous avez appris à déployer un conteneur dans Amazon Lightsail. Dans le module suivant, vous apprendrez à mettre à jour votre conteneur.

À suivre : mise à jour d'un conteneur

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