Implementazione di un'applicazione Web di container su Amazon Lightsail

GUIDA ALLE OPERAZIONI DI BASE

Modulo 3: Implementazione di un container

In questo modulo, il nostro container verrà implementato nel cloud

Introduzione

Una volta pronto il servizio container di Amazon Lightsail, è possibile implementare il container.

Amazon Lightsail consente di implementare i container da repository di immagini di container pubblici come Docker Hub, Amazon ECR Public Gallery o la propria macchina locale.

In questa guida, l'implementazione verrà eseguita dal computer locale.

Gli argomenti affrontati

  • Come inserire un'immagine container locale in Amazon Lightsail
  • Come implementare una versione dell'immagine di container su un servizio container

 Tempo richiesto per il completamento

10 minuti

 Prerequisiti del modulo

  • Account AWS con accesso da amministratore**
  • Browser consigliato: l'ultima versione di Chrome o Firefox

[**]Gli account creati nelle ultime 24 ore potrebbero non avere ancora accesso a tutti servizi richiesti per questo tutorial.

Implementazione

Inserimento di un'immagine di container locale

Il primo passo della procedura di implementazione di un container è l'inserimento di un'immagine di container in Amazon Lightsail

Aprire un terminale nella directory in cui è stato creato il container e digitare il comando riportato di seguito. Assicurarsi di utilizzare la stessa regione in cui è stato creato il servizio container Lightsail.

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.    

Il comando richiama docker push per caricare l'immagine in Amazon Lightsail. Il completamento dell'operazione potrebbe richiedere qualche minuto, a seconda della larghezza di banda di rete.

L'ultima riga dell'output assegna il nome interno del container, ovvero, nel nostro caso :signup-application.latest.1. Prendere nota di questo nome in quanto sarà necessario per implementare il container nel servizio container. Nel caso in cui si desideri accedere al nome container in un secondo momento, è possibile utilizzare il seguente comando:

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

Inserimento di un'immagine di container locale in Lightsail

Una volta che l'immagine del container è archiviata su Amazon Lightsail, è possibile implementarla nel servizio container.

Per creare un'implementazione, Lightsail ha bisogno delle seguenti informazioni:

  • Il nome dell'immagine di container da implementare (:signup-application.latest.1 restituito dal comando precedente)
  • La porta di rete utilizzata dal container (come descritto nella configurazione di Dockerfile)
  • (facoltativo) I dettagli di un endpoint di rete accessibile pubblicamente ovvero un numero di porta TCP e il protocollo, l'IP verrà assegnato automaticamente.

Tutte queste informazioni sono memorizzate in un file JSON che deve essere già stato creato prima dell'implementazione.

Creare un file JSON denominato lc.json. Se si lavora dal codice scaricato, è possibile modificare il file lc.json esistente che si trova nella stessa directory del container. Copiare il seguente json nel file:

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

Quindi, implementare il container digitando il seguente comando:

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

Notare lo stato "stato": "IMPLEMENTAZIONE IN CORSO" . Dopo un po' di tempo, lo stato diventa ATTIVO. Il completamento dell'implementazione richiede qualche minuto. È possibile controllare lo stato dell'implementazione utilizzando il seguente comando:

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

Test dell'implementazione

Per testare l'implementazione, per prima cosa richiamare l'URL Lightsail creato. Aprire un terminale ed emettere il seguente comando:

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

Aprire il browser preferito e passare all'URL di implementazione.

gsg-build-lightsail-3

In alternativa è possibile utilizzare l’URL per eseguire il test dell'endpoint dalla riga comandi:

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

Congratulazioni, il container è stato appena implementato in Amazon Lightsail.

Conclusioni

In questo modulo hai imparato a implementare un container in Amazon Lightsail. Nel modulo successivo scoprirai come aggiornare il container.

A seguire: Aggiornamento del container

Facci sapere com'è andata.

Grazie per il tuo feedback
Siamo contenti che questa pagina ti sia stata d’aiuto. Vuoi condividere ulteriori dettagli per aiutarci a continuare a migliorare?
Chiudi
Grazie per il tuo feedback
Ci dispiace che questa pagina non ti sia stata d'aiuto. Vuoi condividere ulteriori dettagli per aiutarci a continuare a migliorare?
Chiudi