GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

So stellen Sie einen Docker-Container in AWS Elastic Beanstalk bereit

Müssen Sie die Bereitstellung von Docker-Containern automatisieren? Haben Sie schon von AWS Elastic Beanstalk gehört? Der AWS Elastic Beanstalk ist ein weiterer ausgezeichneter Service für die Bereitstellung und Skalierung von Webanwendungen und -services.

In diesem Tutorial erfahren Sie, wie Sie mithilfe von EB CLI und GitHub Actions eine Anwendung für AWS Elastic Beanstalk bereitstellen.

Bereit? Lesen Sie weiter und beginnen Sie mit der Skalierung Ihrer Anwendungen!

Voraussetzungen

Dieses Tutorial wird eine praktische Demonstration sein. Wenn Sie mitmachen möchten, stellen Sie sicher, dass Sie Folgendes haben:

  • AWS Command-Line Interface (CLI) – Dieses Tutorial verwendet AWS CLI v2.
  • AWS-Benutzer mit Elastic Beanstalk-Berechtigung.
  • EB CLI v3.14.6 installiert
  • Ein GitHub-Konto und ein GitHub-Repository, das bereits eingerichtet ist.

Erstellen eines statischen Docker-Webhosts

Um zu demonstrieren, wie ein Docker-Container bereitgestellt wird, benötigen Sie zunächst eine bereitzustellende App. Und für diese Demo verwenden Sie eine HTML-Datei.

1. Führen Sie den git clone aus Befehl unten, um eine HTML-Datei aus einem GitHub-Repository zu klonen.

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

2. Als nächstes erstellen Sie ein Dockerfile mit Ihrem bevorzugten Texteditor im Stammverzeichnis des von Ihnen geklonten Repositorys (Schritt eins) und füllen Sie die Datei mit dem folgenden Code.

Der folgende Code zeigt die Ausgabe des HTML-Codes (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. Führen Sie den docker build aus Befehl unten, um einen Docker-Container Ihrer HTML-Datei mit dem Namen html zu erstellen im Arbeitsverzeichnis.

docker build -t html .

4. Führen Sie nun den docker run aus Befehl unten, um den Docker-Container auszuführen (html ), die Sie zuvor erstellt haben (Schritt drei).

Der --name Flag teilt Docker den Namen mit (justhtml ), die beim Verweisen auf den Container innerhalb des Netzwerks verwendet werden soll. Während das -p Flag bildet den Port Ihres Localhosts ab (8080 ) an den Port des Docker-Containers (80 ).

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

5. Öffnen Sie schließlich Ihren Webbrowser und navigieren Sie zu http://localhost:8080/, um zu überprüfen, ob Sie auf den Docker-Container (HTML) zugreifen können.

Wenn alles gut funktioniert, sehen Sie die unten gezeigte HTML-Seite.

Bereitstellen der Anwendung auf Elastic Beanstalk über die AWS CLI

Sie haben überprüft, dass Ihr Docker-Container auf Ihrem Host zugänglich ist, also ist es an der Zeit, Ihre Anwendung auf AWS Elastic Beanstalk bereitzustellen. Sie verwenden die EB CLI, um Ihren Docker-Container (HTML) für AWS Elastic Beanstalk bereitzustellen.

Vorausgesetzt, Sie haben die AWS CLI bereits eingerichtet, müssen Sie nichts tun, um die EB CLI einzurichten. Wieso den? EB CLI verwendet dieselben Anmeldeinformationen wie AWS CLI.

1. Führen Sie eb init aus Befehl unten, um eine Elastic Beanstalk-Umgebung für Ihr Projekt zu initialisieren. Die Umgebung ermöglicht es Elastic Beanstalk, die Art der Anwendung zu identifizieren, die Sie bereitstellen möchten.

eb init

Nachdem Sie den Befehl ausgeführt haben, werden Sie aufgefordert, die Details einzugeben. Nachfolgend wurden für dieses Beispiel die folgenden Optionen verwendet.

  • Standardregion: 3
  • Anwendungsname: html
  • Anscheinend verwenden Sie Docker. Ist das richtig? Y
  • Plattformzweig auswählen: 1
  • Möchten Sie mit CodeCommit fortfahren? N
  • Möchten Sie SSH für Ihre Instanzen einrichten? N

2. Als nächstes führen Sie eb create aus Befehl unten, um eine Umgebung für Ihre Anwendung auf Elastic Beanstalk zu erstellen. Im Grunde stellen Sie Ihre Anwendung bereit und Elastic Beanstalk kümmert sich um den Rest wie den Lastenausgleich

Wenn Sie Git in Ihrem Projekt initialisiert haben, stellen Sie sicher, dass Sie zuerst alle Änderungen festschreiben, bevor Sie eine Anwendung auf Elastic Beanstalk erstellen. Wieso den? EB CLI verwendet das Git-Archiv des letzten Commits.

eb create

Drücken Sie die Eingabetaste, um den Standard für einen Umgebungsnamen zu verwenden , DNS-CNAME-Präfix und Load-Balancer-Typ da Sie nur an einer HTML-App arbeiten.

Wenn Sie jedoch aufgefordert werden, Spot-Flotte-Anfragen zu aktivieren, geben Sie n ein , da diese Option optionale On-Demand-Instanzen bereitstellt, die hier nicht erforderlich sind, und drücken Sie abschließend die Eingabetaste.

Eine Autoscaling-Gruppe wird automatisch bereitgestellt, wenn Sie eb create zum ersten Mal ausgeführt haben Befehl.

Die Standardtrigger skalieren nach oben, wenn der durchschnittliche ausgehende Netzwerkverkehr von jeder Instanz über einen Zeitraum von fünf Minuten mehr als 6 MB beträgt, und nach unten, wenn der ausgehende Netzwerkverkehr weniger als 2 MB über einen Zeitraum von fünf Minuten beträgt.

Da Ihre Anwendung nur aus HTML besteht, ist es unwahrscheinlich, dass eine Anwendungsskalierung ausgelöst wird.

3. Führen Sie schließlich eb open aus Befehl unten, um Ihre Anwendung in Ihrem Standard-Webbrowser direkt aus Elastic Beanstalk zu öffnen.

eb open

Verifizieren der AWS Elastic Beanstalk-Anwendung

Nachdem Sie Ihre Anwendung bereitgestellt haben, sehen Sie alle praktischen Funktionen, die Ihrer Anwendung hinzugefügt wurden. Sie überprüfen zunächst, wo Elastic Beanstalk die Anwendungsdatei gespeichert hat.

So haben Sie Zugriff auf die Anwendungsdatei:

1. Melden Sie sich mit dem in der AWS CLI-Konfiguration hinzugefügten Benutzer bei der AWS-Konsole an.

2. Klicken Sie auf Alle Dienste Klicken Sie im Dropdown-Menü auf Speicher und wählen Sie dann S3 aus .

3. Klicken Sie im S3-Dashboard auf Ihr Projekt, um Ihre Anwendungsinformationen anzuzeigen.

Wie unten gezeigt, sehen Sie Ihre Anwendung in den Objekten Liste.

4. Klicken Sie abschließend auf das Dropdown-Menü Alle Dienste und dann auf die Registerkarte Compute, und wählen Sie dann EC2 aus, um auf das EC2-Dashboard zuzugreifen .

Auf dem EC2-Dashboard können Sie die EC2-Ressourcen sehen, die Ihre Anwendung ausführen, ähnlich wie unten. Aber wohlgemerkt, die unten stehenden Daten können von Ihren abweichen.

Zusätzlich können Sie den eb status ausführen Befehl unten, um weitere Details zu Ihrer Anwendung anzuzeigen.

eb status

Aktualisieren einer AWS Elastic Beanstalk-Anwendung

Wenn Änderungen an Ihrer Anwendung vorgenommen wurden, müssen Sie eb deploy ausführen den Befehl zum Erstellen und Bereitstellen einer anderen Version Ihrer Anwendung.

Öffnen Sie Ihre HTML-Datei (index.html ) und ersetzen Sie, was Sie in <style> haben Tag mit dem untenstehenden. Der folgende Code ändert die Hintergrundfarbe Ihrer Anwendung .

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

Führen Sie nun die folgenden Befehle zum deploy aus die Änderungen und open Ihre Anwendung in Ihrem Webbrowser.

eb deploy
eb open

Wenn die Bereitstellung abgeschlossen ist, wird Ihre Anwendung automatisch in Ihrem Browser mit den neuen Änderungen geöffnet, die Sie vorgenommen haben.

Bereitstellen einer Anwendung auf Elastic Beanstalk mit GitHub-Aktionen

Neben der Verwendung von EB CLI ist die Verwendung von GitHub Actions eine weitere praktische Möglichkeit, Ihren Docker-Container für Elastic Beanstalk bereitzustellen. Mit GitHub Actions können Sie sich wiederholende Dinge während der Entwicklung automatisieren. Mit GitHub-Aktionen richten Sie die Anweisungen ein und übertragen sie an GitHub.

Im Moment, wenn Sie Änderungen vornehmen, führen Sie den Bereitstellungsbefehl selbst aus. Aber in dieser Demo richten Sie GitHub Actions ein, um die Bereitstellungsbefehle für Sie auszuführen.

Dieses Setup ist vorteilhaft, wenn Sie eine Pipeline entwickeln, die Tests ausführt und andere Überprüfungen durchführt.

1. Erstellen Sie ein Verzeichnis namens .github/workflows im Stammverzeichnis Ihres Projekts. In diesem Verzeichnis speichern Sie Ihre Workflow-Datei.

2. Erstellen Sie als Nächstes eine Datei mit Ihrem bevorzugten Namen im Verzeichnis .github/workflows. Aber für dieses Beispiel heißt die Datei main.yml .

Kopieren Sie den folgenden Code und fügen Sie ihn in die main.yml ein Datei, die Folgendes ausführt:

  • Erstellt einen Job, der den neuesten Push in Ihr Repository erhält und das Repository komprimiert (Elastic Beanstalk erfordert, dass Sie Ihren Projektordner komprimieren).
  • Formatiert den Zeitstempel und verwendet die formatierten Zeitstempel als Versionsbezeichnung.
  • Stellen Sie das Repository in Elastic Beanstalk bereit.
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

Normalerweise möchten Sie in einem Live-Projekt die Anmeldeinformationen in GitHub Secrets ablegen.

3. Führen Sie die folgenden Befehle im Stammverzeichnis Ihres Projekts aus, um den Code zu übertragen und in Ihr GitHub-Repository zu übertragen.

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

4. Öffnen Sie nun Ihren Webbrowser und navigieren Sie zu Ihrem Projekt auf GitHub. Klicken Sie auf die Aktionen und klicken Sie dann auf Ihren aktuellen Commit.

Ähnlich wie in der Abbildung unten können Sie bestätigen, dass Ihre Anwendung bereitgestellt wurde.

5. Führen Sie abschließend den folgenden Befehl aus, um Ihre Anwendung auszuführen.

eb open

Unten können Sie sehen, dass die GitHub-Aktionen die Änderungen erfolgreich bereitgestellt haben.

Schlussfolgerung

In diesem Tutorial haben Sie gelernt, wie Sie eine Anwendung über das Terminal mit EB CLI und GitHub Actions für Elastic Beanstalk bereitstellen.

Inzwischen kennen Sie bereits verschiedene Möglichkeiten, Ihre Anwendung auf Elastic Beanstalk bereitzustellen, sodass Sie auswählen können, welche Ihren Anforderungen am besten entspricht.

Wie wollen Sie auf diesem neu gewonnenen Wissen aufbauen? Vielleicht die Bereitstellung einer vollwertigen Anwendung?


Docker
  1. So führen Sie MySQL in einem Docker-Container aus

  2. Wie man SSH in einen Docker-Container einfügt

  3. So installieren Sie Vim in einem Docker-Container

  4. So listen Sie Docker-Container auf

  5. So beenden Sie einen Docker-Container

So führen Sie PHPMyAdmin in einem Docker-Container aus

So führen Sie Grafana in einem Docker-Container aus

So stellen Sie einen Docker-MongoDB-Container bereit und verwalten ihn

So richten Sie einen Apache Docker-Container ein

So führen Sie Docker-Container aus

So stellen Sie Docker-Container in Jelastic Cloud bereit