Bereitstellen einer Container-Webanwendung auf Amazon Lightsail

HANDBUCH „ERSTE SCHRITTE“

Modul 3: Bereitstellen eines Containers

In diesem Modul werden wir unseren Container in der Cloud bereitstellen

Einführung

Nachdem Ihr Amazon Lightsail Container Service nun bereit ist, besteht der nächste Schritt darin, Ihren Container bereitzustellen.

Amazon Lightsail kann Container aus öffentlichen Container-Image-Repositorys wie Docker Hub, Amazon ECR Public Gallery oder Ihrem lokalen Computer bereitstellen.

In diesem Leitfaden werden wir direkt von Ihrem lokalen Computer aus bereitstellen.

Lerninhalte

  • So übertragen Sie ein lokales Container-Image auf Amazon Lightsail
  • So stellen Sie eine Version Ihres Container-Images in einem Container-Service bereit

 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

Übertragen eines lokalen Container-Images

Der erste Schritt zum Bereitstellen eines Containers besteht darin, ein Container-Image auf Amazon Lightsail zu übertragen

Öffnen Sie ein Terminal in dem Verzeichnis, in dem Sie Ihren Container erstellt haben, und geben Sie den folgenden Befehl ein. Stellen Sie sicher, dass Sie dieselbe Region verwenden, in der Sie Ihren Lightsail-Container-Service erstellt haben.

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.    

Der Befehl ruft Docker-Push auf, um Ihr Bild auf Amazon Lightsail hochzuladen. Dies kann je nach Netzwerkbandbreite einige Minuten dauern.

Die letzte Zeile der Ausgabe gibt den internen Namen Ihres Containers an, in unserem Fall ist es :signup-application.latest.1. Notieren Sie sich diese Informationen, da wir diesen Namen benötigen, um den Container im Container-Service bereitzustellen. Falls Sie zu einem späteren Zeitpunkt auf den Containernamen zugreifen möchten, können Sie den folgenden Befehl eingeben:

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"
        }
    ]
}  

Übertragen eines lokalen Container-Images an LightSail

Da das Container-Image jetzt auf Amazon Lightsail gespeichert ist, können wir dieses Image für den Container-Service bereitstellen.

Lightsail benötigt die folgenden Informationen, um eine Bereitstellung zu erstellen:

  • Der Name des Container-Images, das bereitgestellt werden soll (:signup-application.latest.1 wie vom vorherigen Befehl zurückgegeben)
  • Der vom Container verfügbar gemachte Netzwerkport (wie in der Dockerfile-Konfiguration beschrieben)
  • (optional) Details zu einem öffentlich zugänglichen Netzwerk-Endpunkt: eine TCP-Portnummer und ein Protokoll, die IP wird automatisch zugewiesen.

Alle diese Informationen werden in einer JSON-Datei gespeichert, die Sie vor der Bereitstellung erstellen müssen.

Erstellen Sie eine JSON-Datei mit dem Namen lc.json. Wenn Sie mit dem heruntergeladenen Code arbeiten, ändern Sie die vorhandene Datei lc.json, die sich im selben Verzeichnis wie Ihr Container befindet. Kopieren Sie die folgende Json in die Datei:

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

Stellen Sie dann den Container bereit, indem Sie den folgenden Befehl eingeben:

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/"
    }
}

Beachten Sie den Status „Status“: „WIRD BEREITGESTELLT“ . Nach einer Weile ändert sich der Status in AKTIV. Die Bereitstellung dauert ein paar Minuten. Sie können den Status Ihrer Bereitstellung mit dem folgenden Befehl überprüfen:

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

Testen Sie Ihre Bereitstellung

Um Ihre Bereitstellung zu testen, rufen Sie zuerst die für Sie erstellte URL Lightsail ab. Öffnen Sie ein Terminal und geben Sie den folgenden Befehl ein:

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/"
]

Öffnen Sie Ihren bevorzugten Browser und verweisen Sie ihn auf Ihre Bereitstellungs-URL.

gsg-build-lightsail-3

Alternativ können Sie cURL verwenden, um den Endpunkt über die Befehlszeile zu testen:

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

Herzlichen Glückwunsch, Ihr Container ist jetzt auf Amazon Lightsail bereitgestellt.

Zusammenfassung

In dieser Anleitung haben Sie erfahren, wie Sie einen Container auf Amazon Lightsail bereitstellen. Im nächsten Modul erfahren Sie, wie Sie Ihren Container aktualisieren.

Nächstes Thema: Aktualisieren eines Containers

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