Configurazione del file dockerRun.aws.json v2 - AWS Elastic Beanstalk

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurazione del file dockerRun.aws.json v2

Dockerrun.aws.json v2è un file di configurazione Elastic Beanstalk che descrive come distribuire un set di contenitori Docker ospitati in un ECS cluster in un ambiente Elastic Beanstalk. La piattaforma Elastic Beanstalk ECS crea una definizione di attività, che include una definizione di contenitore. ECS Queste definizioni sono descritte nel file di configurazione Dockerrun.aws.json.

La definizione del contenitore nel Dockerrun.aws.json file descrive i contenitori da distribuire su ogni EC2 istanza Amazon del ECS cluster. In questo caso un'EC2istanza Amazon viene anche definita istanza del contenitore host, perché ospita i contenitori Docker. Il file di configurazione descrive anche i volumi di dati da creare sull'istanza di container host per il montaggio dei container Docker. Per ulteriori informazioni e un diagramma dei componenti in un ambiente Docker ECS gestito su Elastic Beanstalk, consulta la parte precedente di questo capitolo. ECSpanoramica della piattaforma Docker gestita

Un file Dockerrun.aws.json può essere utilizzato da solo o compresso con un codice sorgente aggiuntivo in un singolo archivio. Il codice sorgente archiviato con a Dockerrun.aws.json viene distribuito nelle istanze di EC2 container Amazon ed è accessibile nella directory. /var/app/current/

Dockerrun.aws.json v2

Il file Dockerrun.aws.json include le seguenti sezioni:

AWSEBDockerrunVersion

Speciifica il numero di versione come valore 2 per ECS gli ambienti Docker gestiti.

volumi

Crea volumi dalle cartelle nell'istanza del EC2 contenitore Amazon o dal tuo pacchetto sorgente (distribuito su). /var/app/current Monta questi volumi nei percorsi all'interno dei container Docker utilizzando mountPoints nella sezione containerDefinitions.

containerDefinitions

Una serie di definizioni del container.

autenticazione (facoltativa)

Il percorso in Amazon S3 di un file .dockercfg che contiene i dati di autenticazione per un repository privato.

Le sezioni containerDefinitionse volumi Dockerrun.aws.json utilizzano la stessa formattazione delle sezioni corrispondenti di un file di definizione delle ECS attività di Amazon. Per ulteriori informazioni sul formato di definizione delle attività e un elenco completo dei parametri di definizione delle attività, consulta le definizioni delle ECS attività di Amazon nella Amazon Elastic Container Service Developer Guide.

Formato del volume

Il parametro volume crea volumi da entrambe le cartelle nell'istanza del EC2 contenitore Amazon o dal pacchetto sorgente (distribuito su). /var/app/current

I volumi sono specificati nel seguente formato:

"volumes": [ { "name": "volumename", "host": { "sourcePath": "/path/on/host/instance" } } ],

Monta questi volumi nei percorsi all'interno dei container Docker utilizzando mountPoints nella definizione del container.

Elastic Beanstalk configura volumi aggiuntivi per i log, uno per ogni container. Questi devono essere montati dai container Docker per scrivere log nell'istanza host.

Per maggiori dettagli, consulta il campo mountPoints nella sezione Formato di definizione del container di seguito.

Formato della definizione del container

Gli esempi seguenti mostrano un sottoinsieme di parametri comunemente usati nella sezione. containerDefinitions Sono disponibili ulteriori parametri opzionali.

La piattaforma Beanstalk crea una definizione di ECS attività, che include una definizione di contenitore. ECS Beanstalk supporta un sottoinsieme di parametri per la definizione del contenitore. ECS Per ulteriori informazioni, consulta Definizioni di container nella Guida per gli sviluppatori di Amazon Elastic Container Service.

Un file Dockerrun.aws.json contiene un set di uno o più oggetti di definizione del container con i seguenti campi:

name

Il nome del container. Per informazioni sulla lunghezza massima e i caratteri consentiti, vedi Parametri della definizione del container standard.

image

Il nome di un'immagine Docker in un archivio Docker online da cui stai creando un container Docker. Nota queste convenzioni:

  • Le immagini in repository ufficiali su Docker Hub utilizzano un singolo nome (ad esempio ubuntu o mongo).

  • Le immagini in altri repository su Docker Hub vengono qualificate con un nome di organizzazione (ad esempi, amazon/amazon-ecs-agent.

  • Le immagini in altri archivi online vengono ulteriormente qualificate da un nome di dominio (ad esempi, quay.io/assemblyline/ubuntu).

environment

Un set di variabili di ambiente da passare al container.

Ad esempio, la seguente voce definisce una variabile di ambiente con il nome Container e il valore PHP:

"environment": [ { "name": "Container", "value": "PHP" } ],
essential

True se l'attività deve interrompersi in caso di esito negativo del container. I container non essenziali possono arrestarsi o bloccarsi senza influire sul resto dei container sull'istanza.

memory

Quantità di memoria sull'istanza di container da riservare per il container. Specifica un numero intero diverso da zero per uno o entrambi i parametri memory e memoryReservation nelle definizioni del container.

memoryReservation

Il limite flessibile (in MiB) della memoria da prenotare per il container. Specifica un numero intero diverso da zero per uno o entrambi i parametri memory e memoryReservation nelle definizioni del container.

mountPoints

Volumi dall'istanza del EC2 contenitore Amazon da montare e posizione nel file system del contenitore Docker in cui installarli. Quando monti volumi che includono il contenuto dell'applicazione, il container è in grado di leggere i dati caricati nel bundle di origine. Quando monti volumi di log per la scrittura di dati di log, Elastic Beanstalk è in grado di raccogliere dati di log da questi volumi.

Elastic Beanstalk crea volumi di log sull'istanza di container, uno per ogni container Docker, in /var/log/containers/containername. Questi volumi sono denominati awseb-logs-containername e devono essere montati nel percorso all'interno della struttura del file container in cui vengono scritti i log.

Ad esempio, il seguente punto di montaggio mappa la posizione del log nginx nel container al volume generato da Elastic Beanstalk per il container nginx-proxy.

{ "sourceVolume": "awseb-logs-nginx-proxy", "containerPath": "/var/log/nginx" }
portMappings

Mappa porte di rete sul container alle porte sull'host.

links

Elenco dei container a cui effettuare il collegamento. I container collegati sono in grado di rilevarsi reciprocamente e comunicare in modo sicuro.

volumesFrom

Consente di montare tutti i volumi da un container diverso. Ad esempio, per montare i volumi da un container denominato web:

"volumesFrom": [ { "sourceContainer": "web" } ],

Formato di autenticazione: utilizzo di immagini da un repository privato

La sezione authentication contiene i dati di autenticazione per un repository privato. Questa voce è facoltativa.

Aggiungi le informazioni sul bucket Amazon S3 che contiene il file di autenticazione al parametro authentication del file Dockerrun.aws.json. Assicurati che il parametro authentication contenga una chiave e un bucket Amazon S3 validi. Il bucket Amazon S3 deve essere ospitato nella stessa regione dell'ambiente che lo sta utilizzando. Elastic Beanstalk non scaricherà file dai bucket Amazon S3 ospitati in altre regioni.

Utilizza il seguente formato:

"authentication": { "bucket": "amzn-s3-demo-bucket", "key": "mydockercfg" },

Per informazioni sulla generazione e sul caricamento del file di autenticazione, vedi Utilizzo di immagini da un archivio privato in Elastic Beanstalk.

Esempio di Dockerrun.aws.json v2

Il seguente snippet è un esempio che illustra la sintassi del file Dockerrun.aws.json per un'istanza con due container.

{ "AWSEBDockerrunVersion": 2, "volumes": [ { "name": "php-app", "host": { "sourcePath": "/var/app/current/php-app" } }, { "name": "nginx-proxy-conf", "host": { "sourcePath": "/var/app/current/proxy/conf.d" } } ], "containerDefinitions": [ { "name": "php-app", "image": "php:fpm", "environment": [ { "name": "Container", "value": "PHP" } ], "essential": true, "memory": 128, "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true } ] }, { "name": "nginx-proxy", "image": "nginx", "essential": true, "memory": 128, "portMappings": [ { "hostPort": 80, "containerPort": 80 } ], "links": [ "php-app" ], "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true }, { "sourceVolume": "nginx-proxy-conf", "containerPath": "/etc/nginx/conf.d", "readOnly": true }, { "sourceVolume": "awseb-logs-nginx-proxy", "containerPath": "/var/log/nginx" } ] } ] }