So stellen Sie eine Flask-App bereit

mit Amazon-Lightsail-Containern

TUTORIAL

Einführung

Amazon Lightsail ist ein einfach zu bedienender virtueller privater Server, der einen Container-Service bietet. Folgen Sie diesem Tutorial, um zu erfahren, wie Sie eine Flask-App im Lightsail-Container-Service bereitstellen.

In diesem Tutorial erstellen Sie eine Flask-Anwendung, entwickeln einen Docker-Container, erstellen einen Container-Service in Lightsail und stellen die Anwendung dann bereit. 

Erste kostenlose Schritte mit Amazon Lightsail. 

Übersicht

In diesem Tutorial richten Sie einen Docker-Container auf Ihrem lokalen Computer ein, richten einen Container im Amazon-Lightsail-Service ein und starten „Hello, World!“-Anwendungen.

Voraussetzungen

Bevor Sie mit diesem Tutorial beginnen, benötigen Sie:

  • Ein AWS-Konto: Wenn Sie noch keins haben, folgen Sie der Anleitung zum Einrichten Ihrer Umgebung, um einen schnellen Überblick zu erhalten.
  • Eine ordnungsgemäß konfigurierte AWS-Befehlszeilenschnittstelle (CLI): Weitere Informationen zur Einrichtung der AWS-CLI finden Sie in der AWS-CLI-Dokumentation. Stellen Sie sicher, dass Sie die neueste Version der AWS-CLI verwenden, nämlich v2. Stellen Sie abschließend sicher, dass eine Region standardmäßig festgelegt ist. Andernfalls müssen Sie die Region angeben, wenn Sie Lightsail-Bereitstellungsbefehle ausgeben.
  • Docker ist auf Ihrem lokalen Computer installiert.
  • Installiertes und konfiguriertes Amazon Lightsail Control (lightsailctl)-Plugin: Weitere Informationen zur Installation von Lightsail Control finden Sie in der Lightsail-Control-Dokumentation.

 AWS-Erfahrung

Mittelstufenkurs

 Benötigte Zeit

30 Minuten

 Kosten für die Fertigstellung

Kostenloses Kontingent ist verfügbar. Weitere Informationen finden Sie auf der Lightsail-Preisseite.

 Erfordert

Ein aktives AWS-Konto
AWS-CLI
Amazon Lightsail Control
Docker

 Verwendete Services

Amazon Lightsail

 Letzte Aktualisierung

17. Oktober 2023

Implementierung

Schritt 1: eine Flask-Anwendung erstellen

Führen Sie die folgenden Schritte auf Ihrem lokalen Computer aus, auf dem Docker ausgeführt wird. Diese Schritte führen Sie durch den Prozess der Erstellung der Flask-Anwendungsdateien.

Schritt 1a: Erstellen Sie in der Befehlszeile Ihres lokalen Computers ein neues Projektverzeichnis und wechseln Sie zu diesem Verzeichnis.

mkdir lightsail-containers-flask
cd lightsail-containers-flask

Schritt 1b: Erstellen Sie eine neue Datei mit dem Namen app.py mit dem folgenden Code:  

Diese minimale Flask-Anwendung enthält eine einzelne Funktion, hello_world, die ausgelöst wird, wenn die Route „/“ angefordert wird. Wenn sie ausgeführt wird, bindet sich diese Anwendung an alle IPs auf dem System („0.0.0.0“) und lauscht auf Port 5000, dem Standard-Flask-Port.

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
   return "Hello, World!"

if __name__ == "__main__":
   app.run(host='0.0.0.0', port=5000)

Schritt 1c: Erstellen Sie eine neue Datei, requirements.txt. Bearbeiten Sie die Datei und fügen Sie den folgenden Code hinzu. Speichern Sie die Datei danach.

Die Dateien requirements.txt werden verwendet, um anzugeben, welche Python-Pakete von der Anwendung benötigt werden. Für diese minimale Flask-Anwendung ist nur ein Paket erforderlich – Flask.

flask===3.0.0

Schritt 1d: Erstellen Sie eine neue Datei mit dem Namen Dockerfile. Bearbeiten Sie die Datei und fügen Sie ihr den folgenden Code hinzu. Speichern Sie die Datei.

Das Python-Alpine-Image stellt sicher, dass der resultierende Container so kompakt und klein wie möglich ist. Der Befehl, der beim Starten des Containers ausgeführt wird, ist derselbe, als ob er über die Befehlszeile ausgeführt würde: python app.py

# Set base image (host OS)
FROM python:3.12-alpine

# By default, listen on port 5000
EXPOSE 5000/tcp

# Set the working directory in the container
WORKDIR /app

# Copy the dependencies file to the working directory
COPY requirements.txt .

# Install any dependencies
RUN pip install -r requirements.txt

# Copy the content of the local src directory to the working directory
COPY app.py .

# Specify the command to run on container start
CMD [ "python", "./app.py" ]

Schritt 1e: Zu diesem Zeitpunkt sollte Ihr Verzeichnis die folgenden Dateien enthalten:

$ tree
.

├── app.py
├── Dockerfile
└── requirements.txt

0 Verzeichnisse, 3 Dateien

Schritt 2: Ihr Container-Image erstellen

Schritt 2a: Erstellen Sie den Container mit Docker. Verwenden Sie den folgenden Befehl aus demselben Verzeichnis wie das Dockerfile:

Dieser Befehl erstellt einen Container mit dem Dockerfile im aktuellen Verzeichnis und markiert den Container als „flask-container“.

docker build -t flask-container .

Schritt 2b: Sobald der Container-Build abgeschlossen ist, testen Sie die Flask-Anwendung lokal, indem Sie den Container ausführen.

docker run -p 5000:5000 flask-container

Schritt 2c: Die Flask-App wird im Container ausgeführt und auf Port 5000 für Ihr lokales System verfügbar gemacht. Gehen Sie zu http://localhost:5000 oder verwenden Sie curl von der Befehlszeile aus und Sie werden „Hello, World!“ sehen.

$ curl localhost:5000

Hello, World!

Schritt 3: Erstellen eines Container-Services

Führen Sie die folgenden Schritte aus, um den Lightsail-Container-Service mithilfe der AWS CLI zu erstellen, und übertragen Sie dann Ihr lokales Container-Image mithilfe des Lightsail-Steuer-Plug-ins (lightsailctl) auf Ihren neuen Container-Service.

Schritt 3a: Erstellen Sie einen Lightsail-Container-Service mit dem Befehl create-container-service.

Die Leistungs- und Skalierungsparameter geben die Kapazität des Container-Services an. Für eine minimale Flask-App ist nur wenig Kapazität erforderlich.

Die Ausgabe des Befehls create-container-service zeigt an, dass der Status des neuen Services „PENDING“ (ausstehend) ist. Sehen Sie sich den zweiten Codeblock an, um dies zu sehen. 

aws lightsail create-container-service --service-name flask-service --power small --scale 1

Schritt 3b: Verwenden Sie den Befehl get-container-services, um den Status des Containers zu überwachen, während er erstellt wird.

Warten Sie, bis der Status des Container-Service auf „READY“ wechselt, bevor Sie mit dem nächsten Schritt fortfahren. Ihr Container-Service sollte nach ein paar Minuten bereit sein.

aws lightsail get-container-services

Ausgabe:

{
    "containerService": {
        "containerServiceName": "flask-service",
         ...
        "state": "PENDING",

Ausgabe:

{
    "containerService": {
        "containerServiceName": "flask-service",
         ...
        "state": "READY",

Schritt 3c: Schieben Sie den Anwendungs-Container mit dem Befehl push-container-image zu Lightsail. 

Hinweis: Das X in „:flask-service.flask-container.X“ wird ein numerischer Wert sein. Wenn Sie zum ersten Mal ein Image an Ihren Container-Service übertragen, lautet diese Nummer 1. Diese Nummer benötigen Sie im nächsten Schritt.

aws lightsail push-container-image --service-name flask-service --label flask-container --image flask-container

Image „flask-container“ registriert.
… Benennen Sie in Bereitstellungen dieses Image „:flask-service.flask-container.X“.

Schritt 4: Den Container bereitstellen

Führen Sie die folgenden Schritte aus, um JSON-Dateien für die Bereitstellung und öffentliche Endpunktkonfiguration zu erstellen, und stellen Sie dann Ihr Container-Image für Ihren Container-Service bereit.

Schritt 4a: Erstellen Sie eine neue Datei, containers.json. Bearbeiten Sie die Datei und fügen Sie den folgenden Code hinzu. 

Ersetzen Sie das X in: flask-service.flask-container.X durch den numerischen Wert aus dem vorherigen Schritt. 

Speichern Sie die Datei.

Die Datei containers.json beschreibt die Einstellungen der Container, die im Container-Service gestartet werden. In diesem Fall beschreibt die Datei containers.json den Flask-Container, das Image, das er verwenden wird, und den Port, den er verfügbar machen wird.

{
    "flask": {
        "image": ":flask-service.flask-container.X",
        "ports": {
            "5000": "HTTP"
        }
    }
}

Schritt 4b: Erstellen Sie eine neue Datei, public-endpoint.json

Bearbeiten Sie die Datei und fügen Sie den folgenden Code hinzu.

Speichern Sie die Datei.

Die Datei public-endpoint.json beschreibt die Einstellungen des öffentlichen Endpunkts für den Container-Service. In diesem Fall gibt die Datei public-endpoint.json an, dass der Flask-Container-Port 5000 verfügbar macht. Öffentliche Endpunkteinstellungen sind nur für Services erforderlich, die öffentlichen Zugriff benötigen.


Nachdem Sie die Dateien containers.json und public-endpoint.json erstellt haben, sollte Ihr Projektverzeichnis die folgenden Dateien enthalten:

  • app.py
  • containers.json
  • Dockerfile
  • public-endpoint.json
  • requirements.txt
{
    "containerName": "flask",
    "containerPort": 5000
}

Schritt 4c: Stellen Sie den Container mit der AWS-CLI mithilfe des Befehls create-container-service-deployment für den Container-Service bereit.

Die Ausgabe des Befehls „create-container-service-deployment“ zeigt an, dass der Status des Container-Services jetzt wie gezeigt „DEPLOYING“ (wird bereitgestellt) lautet.

aws lightsail create-container-service-deployment --service-name flask-service --containers file://containers.json --public-endpoint file://public-endpoint.json

Ausgabe:

{
    "containerServices": [{
        "containerServiceName": "flask-service",
         ...
        "state": "DEPLOYING",

Schritt 4d: Verwenden Sie den Befehl get-container-services, um den Status des Containers zu überwachen, bis er zu „RUNNING“ (wird ausgeführt) wechselt, bevor Sie mit dem nächsten Schritt fortfahren.

Der Befehl get-container-service gibt auch die Endpunkt-URL für den Container-Service zurück.

Nachdem sich der Status des Container-Services in „RUNNING“ geändert hat, was in der Regel einige Minuten dauert, navigieren Sie in Ihrem Browser zu dieser URL, um zu überprüfen, ob der Container-Service ordnungsgemäß ausgeführt wird. Ihre Browserausgabe sollte „Hello, World!“ anzeigen wie zuvor.

aws lightsail get-container-services --service-name flask-service

Ausgabe:

{
    "containerServices": [{
        "containerServiceName": "flask-service",
         ...
        "state": "RUNNING",
         ...        "url": "https://flask-service...

Herzlichen Glückwunsch! Sie haben erfolgreich mithilfe von Amazon-Lightsail-Containern eine containerisierte Flask-Anwendung bereitgestellt.

Schritt 5: Bereinigen der Ressourcen

Führen Sie die folgenden Schritte für den Lightsail-Container-Service aus, den Sie im Rahmen dieses Tutorials erstellt haben.

Schritt 5a: Verwenden Sie den Befehl delete-container-service, um Lightsail-Ressourcen zu bereinigen und zu löschen.

Der Befehl „delete-container-service“ entfernt den Container-Service, alle zugehörigen Container-Bereitstellungen und Container-Images.

aws lightsail delete-container-service --service-name flask-service

Schritt 5b: Stellen Sie sicher, dass keine Container ausgeführt werden, indem Sie den Befehl get-container-services verwenden.

aws lightsail get-container-services

Ausgabe:

{
    "containerServices": []
}

Zusammenfassung

Herzlichen Glückwunsch! Sie haben erfolgreich mithilfe von Amazon-Lightsail-Containern eine containerisierte Flask-Anwendung bereitgestellt.


Amazon Lightsail ist eine hervorragende Option für die Entwicklung, Erstellung und Bereitstellung einer Vielzahl von Anwendungen, wie WordPress, Websites und Blog-Plattformen.

Nächste Schritte

Sie können Ihre Reise mit AWS fortsetzen, indem Sie die nächsten Schritte im unten stehenden Abschnitt befolgen.

War diese Seite hilfreich?