GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Comment déployer un conteneur Docker sur AWS Elastic Beanstalk

Besoin d'automatiser le déploiement du conteneur Docker ? Avez-vous entendu parler d'AWS Elastic Beanstalk ? AWS Elastic Beanstalk est un autre excellent service de déploiement et de mise à l'échelle d'applications et de services Web.

Dans ce didacticiel, vous apprendrez à déployer une application sur AWS Elastic Beanstalk à l'aide de l'interface de ligne de commande EB et des actions GitHub.

Prêt? Continuez à lire et commencez à faire évoluer vos applications !

Prérequis

Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d'avoir les éléments suivants :

  • AWS Command-Line Interface (CLI) – Ce didacticiel utilise AWS CLI v2.
  • Utilisateur AWS avec autorisation Elastic Beanstalk.
  • EB CLI v3.14.6 installé
  • Un compte GitHub et un dépôt GitHub déjà configuré.

Création d'un hôte Web statique Docker

Pour montrer comment déployer un conteneur Docker, vous aurez d'abord besoin d'une application à déployer. Et pour cette démo, vous utiliserez un fichier HTML.

1. Exécutez le git clone commande ci-dessous pour cloner un fichier HTML à partir d'un référentiel GitHub.

git clone [email protected]:Adam-the-Automator/aws-elastic-beanstalk.git

2. Ensuite, créez un Dockerfile avec votre éditeur de texte préféré à la racine du référentiel que vous avez cloné (première étape), et remplissez le fichier avec le code ci-dessous.

Le code ci-dessous affiche la sortie du code HTML (index.html ).

# Get NGINX base image
FROM nginx 

# Add the index file to nginx
ADD index.html /usr/share/nginx/html/

# Expose port to enable elastic beanstalk and connect to the Docker container
EXPOSE 80

3. Exécutez la docker build commande ci-dessous pour créer un conteneur Docker de votre fichier HTML appelé html dans le répertoire de travail.

docker build -t html .

4. Maintenant, exécutez le docker run commande ci-dessous pour exécuter le conteneur Docker (html ) que vous avez construit précédemment (étape 3).

Le --name flag indique à Docker le nom (justhtml ) à utiliser lors du référencement du conteneur au sein du réseau. Alors que le -p flag mappe le port de votre hôte local (8080 ) au port du conteneur Docker (80 ).

docker run --name justhtml -p 8080:80 html

5. Enfin, ouvrez votre navigateur Web et accédez à http://localhost:8080/ pour vérifier que vous pouvez accéder au conteneur Docker (HTML).

Si tout fonctionne bien, vous verrez la page HTML ci-dessous.

Déploiement d'une application sur Elastic Beanstalk via l'AWS CLI

Vous avez vérifié que votre conteneur Docker est accessible sur votre hôte, il est donc temps de déployer votre application sur AWS Elastic Beanstalk. Vous utiliserez l'interface de ligne de commande EB pour déployer votre conteneur Docker (html) sur AWS Elastic Beanstalk.

En supposant que vous ayez déjà configuré l'AWS CLI, vous n'avez rien à faire pour configurer l'EB CLI. Pourquoi? L'interface de ligne de commande EB utilise les mêmes informations d'identification que l'AWS CLI.

1. Exécutez eb init commande ci-dessous pour initialiser un environnement Elastic Beanstalk pour votre projet. L'environnement permet à Elastic Beanstalk d'identifier le type d'application que vous souhaitez déployer.

eb init

Après avoir exécuté la commande, vous recevrez une invite pour remplir les détails. Ci-dessous, les options suivantes ont été utilisées pour cet exemple.

  • Région par défaut : 3
  • Nom de l'application : html
  • Il semble que vous utilisiez Docker. Est-ce correct ? Y
  • Sélectionnez une branche de plate-forme : 1
  • Souhaitez-vous continuer avec CodeCommit ? N
  • Voulez-vous configurer SSH pour vos instances ? N

2. Ensuite, exécutez le eb create commande ci-dessous pour créer un environnement pour votre application sur Elastic Beanstalk. En gros, vous déployez votre application et Elastic Beanstalk s'occupera du reste comme l'équilibrage de charge

Si vous avez initialisé Git dans votre projet, assurez-vous de valider toutes les modifications avant de créer une application sur Elastic Beanstalk. Pourquoi? EB CLI utilise l'archive Git du commit le plus récent.

eb create

Appuyez sur Entrée pour utiliser la valeur par défaut pour un nom d'environnement , préfixe DNS CNAME , et type d'équilibreur de charge puisque vous ne travaillez que sur une application HTML.

Mais lorsque vous êtes invité à activer les demandes Spot Fleet, saisissez n , car cette option fournit des instances à la demande facultatives qui ne sont pas nécessaires ici, et enfin appuyez sur Entrée.

Un groupe d'autoscaling est automatiquement provisionné lors de la première exécution de eb create commande.

Les déclencheurs par défaut augmentent lorsque le trafic réseau sortant moyen de chaque instance est supérieur à 6 Mo et diminuent lorsque le trafic réseau sortant est inférieur à 2 Mo sur une période de cinq minutes.

Comme votre application est uniquement HTML, il est peu probable que le déclenchement de la mise à l'échelle de l'application se produise.

3. Enfin, exécutez le eb open commande ci-dessous pour ouvrir votre application sur votre navigateur Web par défaut directement depuis Elastic Beanstalk.

eb open

Vérification de l'application AWS Elastic Beanstalk

Maintenant que vous avez déployé votre application, vous verrez toutes les fonctionnalités pratiques ajoutées à votre application. Vous allez d'abord vérifier où Elastic Beanstalk a stocké le fichier d'application.

Pour avoir accès au dossier de candidature :

1. Connectez-vous à la console AWS avec l'utilisateur ajouté dans la configuration de l'AWS CLI.

2. Cliquez sur Tous Services menu déroulant, cliquez sur Stockage puis sélectionnez S3 .

3. Sur le tableau de bord S3, cliquez sur votre projet pour voir les informations de votre application.

Comme indiqué ci-dessous, vous voyez votre application dans les Objets liste.

4. Enfin, cliquez sur le menu déroulant Tous les services et cliquez sur l'onglet Calcul, puis sélectionnez EC2 pour accéder au tableau de bord EC2 .

Sur le tableau de bord EC2, vous pouvez voir les ressources EC2 qui exécutent votre application, similaire à celle ci-dessous. Mais attention, les données ci-dessous peuvent différer des vôtres.

De plus, vous pouvez exécuter le eb status commande ci-dessous pour voir plus de détails sur votre application.

eb status

Mise à jour d'une application AWS Elastic Beanstalk

Lorsque des modifications ont été apportées à votre application, vous devrez exécuter le eb deploy la commande pour créer et déployer une autre version de votre application.

Ouvrez votre fichier HTML (index.html ) et remplacez ce que vous avez dans le <style> étiquette avec celle ci-dessous. Le code ci-dessous change la couleur de fond de votre application .

<style>
    body{
        background-color: rgb(0, 255, 55);
    }
</style>

Maintenant, exécutez les commandes suivantes pour deploy les modifications et open votre application sur votre navigateur Web.

eb deploy
eb open

Lorsque le déploiement est terminé, votre application s'ouvre automatiquement dans votre navigateur avec les nouvelles modifications que vous avez apportées.

Déploiement d'une application sur Elastic Beanstalk avec des actions GitHub

Outre l'utilisation de l'interface de ligne de commande EB, l'utilisation des actions GitHub est un autre moyen pratique de déployer votre conteneur Docker sur Elastic Beanstalk. GitHub Actions vous permet d'automatiser les tâches répétitives pendant le développement. Avec GitHub Actions, vous configurez les instructions et les transmettez à GitHub.

Pour le moment, lorsque vous apportez des modifications, vous exécutez vous-même la commande de déploiement. Mais dans cette démo, vous configurerez GitHub Actions pour exécuter les commandes de déploiement pour vous.

Cette configuration est utile si vous développez un pipeline qui exécute des tests et effectue d'autres vérifications.

1. Créez un répertoire nommé .github/workflows dans le répertoire racine de votre projet. Ce répertoire est l'endroit où vous stockerez votre fichier de workflow.

2. Ensuite, créez un fichier avec votre nom préféré dans le répertoire .github/workflows. Mais pour cet exemple, le fichier est nommé main.yml .

Copiez et collez le code ci-dessous dans le main.yml fichier, qui effectue les opérations suivantes :

  • Crée une tâche qui obtient la dernière poussée vers votre référentiel et compresse le référentiel (Elastic Beanstalk vous oblige à compresser votre dossier de projet).
  • Formate l'horodatage et utilise les horodatages formatés comme étiquette de version.
  • Déployez le référentiel sur Elastic Beanstalk.
name: Deployment From Github To AWS
on:
  # activates the workflow when there is a push on the main branch
  push:
    branches:
      - main
jobs:
  deploy:
    runs-on: ubuntu-latest # the operating system your job will run on
    steps:
      - name: Checkout Latest Repo
        # checks out your repository under the GitHub workspace so that your workflow can access it
        uses: actions/[email protected]
        
      - name: Generate Deployment Package 
        # zip all files except .git
        run: zip -r deploy.zip * -x '*.git*'

      - name: Get timestamp
        uses: gerred/actions/[email protected]
        id: current-time
        
      - name: Run string replace
        uses: frabert/[email protected]
        id: format-time
        with:
          # replaces '[:\.]+' in the timestamp with '-'
          pattern: '[:\.]+'
          string: "${{ steps.current-time.outputs.time }}"
          replace-with: '-'
          flags: 'g'
          
      - name: Deploy to EB
        uses: einaregilsson/[email protected]
        with:
					# Input the credentials you used to setup AWS CLI and credentials for the application environment
          aws_access_key: AKIATI3RC11111YQ3TAU
          aws_secret_key: Urr46HfaaaaaabbbbbcccaC/+YpWFtJFbRQN27xF
          application_name: html
          environment_name: html-dev3
          version_label: "${{ steps.format-time.outputs.replaced }}"
          region: us-west-2
          deployment_package: deploy.zip

Généralement, dans un projet en direct, vous voudriez mettre les informations d'identification dans GitHub Secrets.

3. Exécutez les commandes suivantes à la racine de votre projet pour valider et pousser le code vers votre référentiel GitHub.

git add . # adds changes to staging area
git commit -m "update" # commits your changes
git push # Push to GitHub

4. Maintenant, ouvrez votre navigateur Web et accédez à votre projet sur GitHub. Cliquez sur les Actions puis cliquez sur votre commit actuel.

Semblable à l'image ci-dessous, vous pouvez confirmer que votre application est déployée.

5. Enfin, exécutez la commande ci-dessous pour exécuter votre application.

eb open

Ci-dessous, vous pouvez voir que les actions GitHub ont déployé avec succès les modifications.

Conclusion

Tout au long de ce didacticiel, vous avez appris à déployer une application sur Elastic Beanstalk via le terminal avec EB CLI et GitHub Actions.

À présent, vous connaissez déjà différentes manières de déployer votre application sur Elastic beanstalk, vous pouvez donc choisir celle qui répond le mieux à vos besoins.

Comment comptez-vous tirer parti de ces nouvelles connaissances ? Peut-être déployer une application à part entière ?


Docker
  1. Comment déployer un conteneur nginx avec Docker sur Linode

  2. Comment installer Docker et déployer une pile LAMP

  3. Comment exécuter MySQL dans un conteneur Docker

  4. Comment se connecter en SSH à un conteneur Docker

  5. Comment installer Vim dans un conteneur Docker

Comment exécuter PHPMyAdmin dans un conteneur Docker

Comment exécuter Grafana dans un conteneur Docker

Comment déployer et gérer un conteneur Docker MongoDB

Comment configurer un conteneur Apache Docker

Comment exécuter des conteneurs Docker

Comment déployer un conteneur Docker sur Jelastic Cloud