Bereitstellen einer Container-Webanwendung auf Amazon Lightsail

HANDBUCH „ERSTE SCHRITTE“

Modul 1: Vorbereiten Ihres Containers

In diesem Modul erstellen wir eine einfache containerisierte Webanwendung

Einführung

In diesem Modul werden wir die in diesem Handbuch enthaltene Beispielanwendung durchgehen.  Wir werden einen Container erstellen, um die bereitgestellte Webanwendung lokal auszuführen, und die Webanwendung auf unserem lokalen Laptop testen, bevor wir sie in der Cloud bereitstellen.

Lerninhalte

  • Erstellen eines Containers für eine vorhandene Webanwendung
  • Ausführen eines Containers, um eine Anwendung lokal zu testen

Voraussetzungen

Bevor Sie mit dieser Anleitung beginnen, benötigen Sie:

  • Docker Desktop installiert
  • Grundlegende Kenntnisse der Docker-Befehle

 Veranschlagte Zeit

10 Minuten

 Voraussetzungen für das Modul

  • AWS-Konto mit Administratorzugriff**
  • Empfohlener Browser: aktuelle Version von Chrome oder Firefox

[**] Innerhalb der letzten 24 Stunden erstellte Konten haben möglicherweise noch keinen Zugriff auf alle für dieses Tutorial erforderlichen Services.

Implementierung

Erstellen der Client-App

DieWebanwendung im Code-Ordner ist eine Webanwendung, die mit dem Flask-Anwendungsframework für Python entwickelt wurde.

Kurz gesagt enthält das Flask-Framework einen Miniserver, der HTTP-Anfragen empfängt, einen Routing-Mechanismus, um bestimmte Anfragen (ein HTTP-Verb und einen /Pfad) mit Ihrem Python-Code zu verknüpfen, und eine Template-Engine, die das endgültige HTML rendert.

Am besten ist es, wenn Sie Ihrer Flask-Anwendung einen eigenen Webserver vorschalten. Der Webserver ist so konfiguriert, dass er statische Inhalte wie Bilder, Stylesheets (CSS) und JavaScript-Dateien (JS) bereitstellt. Der Webserver leitet alle anderen Anfragen an Ihre Flask-Anwendung weiter. Für diesen Leitfaden haben wir uns für den Nginx-Webserver entschieden.

Die Kommunikation zwischen Nginx und der Flask-App erfolgt über das uWSGI-Protokoll. Die uWSGI-Komponente wird von Flask bereitgestellt.

Die Einrichtung der Anwendung wird durch dieses Bild veranschaulicht.

gsg-build-lightsail-5

Die Anwendung besteht aus folgenden Dateien:

  • application.py ist der Kern der Anwendung, sie definiert die Logik, die Kommunikation mit einem Backend – falls vorhanden – usw.
  • Pipfile listet die Python-Abhängigkeiten der Webanwendung auf.
  • Dockerfile konfiguriert den Container. Es beginnt mit einem offiziellen Nginx-Container, fügt Python, Flask und seine Abhängigkeiten hinzu. Dann kopiert es die nginx-Konfigurationsdatei und ein Startskript.
  • nginx-app.conf ist die Nginx-Konfigurationsdatei. Sie stellt sicher, dass statische Inhalte von Nginx bereitgestellt werden, während andere Anfragen an uWSGI/Flask weitergeleitet werden
  • start.sh startet die Nginx- und uWSGI-Daemons.

Bei der Anwendung handelt es sich um eine einfache Webanwendung, mit der die Einführung einer neuen Dienstleistung oder eines neuen Produkts angekündigt wird und die ein Formular zur Erfassung von Vorabregistrierungen enthält.

Herunterladen des Projekts

Laden Sie zum Erstellen und Testen des Containers eine lokale Kopie des Projekts herunter.

Öffnen Sie ein Terminal und geben Sie die folgenden Befehle ein:

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

cd dev-center-guides/GS_003_web_app_lightsail/code

Von nun an gehen alle Befehle davon aus, dass Sie in dieses Verzeichnis navigiert haben.

Erstellen Ihres Containers

Nachdem Sie nun eine gute Vorstellung von den wichtigsten Anwendungskomponenten und ihrem Zusammenspiel haben, wollen wir einen Container erstellen.

Um die Anwendung innerhalb eines Containers zu erstellen, verwenden Sie Ihr Terminal und geben Sie die folgenden Befehle ein:

# 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 .


Nach einigen Minuten (abhängig von Ihrer Internetbandbreite) ist der Container erstellt.

Sie können alle Container-Images auf Ihrem System mit dem folgenden Befehl auflisten:

docker images

# It should output something similar to 

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

Testen Ihres Containers

Um den Container auf Ihrem lokalen Rechner zu testen, starten Sie zunächst den Container und zeigen dann mit einem Browser auf ihn.

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

Die an den Docker-Ausführungsbefehl übergebenen Optionen sind

  • -p 8080:80, um den TCP-Port 8080 Ihres lokalen Computers mit dem Container-Port 80 (Nginx) zu verbinden.
  • --rm, um den Docker anzuweisen, den Container zu entfernen, wenn er stoppt
  • -v ~/.aws:/root/.aws, um die AWS-CLI-Konfiguration Ihres lokalen Computers im Verzeichnis ~/.aws dem Containerverzeichnis /root/.aws zuzuordnen
  • Schließlich demo-flask-signup:latest - der Name und das Tag des Containers, den wir gerade erstellt haben.

Nachdem der Container jetzt ausgeführt wird, öffnen Sie einen Browser und verweisen Sie ihn auf http://localhost:8080. Sie sollten den Startbildschirm der Anwendung sehen, wie unten dargestellt.

gsg-build-lightsail-1

Herzlichen Glückwunsch, Sie verfügen nun über einen Container, der bereit ist, in der Cloud bereitgestellt zu werden.

Zusammenfassung

In diesem ersten Modul haben wir eine sehr einfache Containeranwendung erstellt und lokal ausgeführt, um sicherzustellen, dass sie funktioniert. Im nächsten Modul lernen wir, wie man einen Amazon Lightsail Container Service erstellt.

Nächstes Thema: Infrastruktur erstellen

Lassen Sie uns wissen, wie wir abgeschnitten haben.

Vielen Dank für Ihr Feedback
Wir freuen uns, dass diese Seite Ihnen geholfen hat. Würden Sie uns weitere Details mitteilen, damit wir uns weiter verbessern können?
Schließen
Vielen Dank für Ihr Feedback
Es tut uns leid, dass diese Seite Ihnen nicht weiterhelfen konnte. Würden Sie uns weitere Details mitteilen, damit wir uns weiter verbessern können?
Schließen