Konfiguration der Datei DockerRun.aws.json v2 - AWS Elastic Beanstalk

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konfiguration der Datei DockerRun.aws.json v2

Dockerrun.aws.json v2ist eine Elastic Beanstalk Beanstalk-Konfigurationsdatei, die beschreibt, wie ein Satz von Docker-Containern bereitgestellt wird, die in einem ECS Cluster in einer Elastic Beanstalk Beanstalk-Umgebung gehostet werden. Die Elastic Beanstalk-Plattform erstellt eine ECS Aufgabendefinition, die eine ECS Container-Definition beinhaltet. Diese Definitionen werden in der Dockerrun.aws.json-Konfigurationsdatei beschrieben.

Die Container-Definition in der Dockerrun.aws.json Datei beschreibt die Container, die auf jeder EC2 Amazon-Instance im ECS Cluster bereitgestellt werden sollen. In diesem Fall wird eine EC2 Amazon-Instance auch als Host-Container-Instance bezeichnet, da sie die Docker-Container hostet. Die Konfigurationsdatei beschreibt auch die Datenvolumen, die auf der Host-Container-Instance erstellt werden müssen, damit die Docker-Container gemountet werden können. Weitere Informationen und ein Diagramm der Komponenten in einer ECS verwalteten Docker-Umgebung auf Elastic Beanstalk finden Sie weiter ECSÜberblick über die verwaltete Docker-Plattform oben in diesem Kapitel.

Eine Dockerrun.aws.json-Datei kann alleine verwendet oder mit einem zusätzlichen Quell-Code in einem einzigen Archiv zu einer ZIP-Datei gepackt werden. Quellcode, der mit a archiviert wurde, Dockerrun.aws.json wird auf EC2 Amazon-Container-Instances bereitgestellt und ist im /var/app/current/ Verzeichnis zugänglich.

Dockerrun.aws.json v2

Der Abschnitt Dockerrun.aws.json enthält die folgenden Bereiche:

AWSEBDockerrunVersion

Gibt die Versionsnummer als Wert 2 für ECS verwaltete Docker-Umgebungen an.

volumes

Erstellt Volumes aus Ordnern in der EC2 Amazon-Container-Instance oder aus Ihrem Quellpaket (bereitgestellt in/var/app/current). Mounten Sie diese Volumen auf Pfade innerhalb Ihrer Docker-Container mit mountPoints im containerDefinitions-Abschnitt.

containerDefinitions

Ein Array von Containerdefinitionen.

Authentifizierung (optional)

Der Speicherort in Amazon S3 für eine .dockercfg-Datei, die Authentifizierungsdaten für ein privates Repository enthält.

Die Abschnitte containerDefinitionsund Volumes von Dockerrun.aws.json verwenden dieselbe Formatierung wie die entsprechenden Abschnitte einer ECS Amazon-Aufgabendefinitionsdatei. Weitere Informationen zum Format der Aufgabendefinition und eine vollständige Liste der Aufgabendefinitionsparameter finden Sie unter ECSAmazon-Aufgabendefinitionen im Amazon Elastic Container Service Developer Guide.

Volume-Format

Der Volume-Parameter erstellt Volumes entweder aus Ordnern in der EC2 Amazon-Container-Instance oder aus Ihrem Quellpaket (bereitgestellt in/var/app/current).

Volumes werden in folgendem Format angegeben:

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

Mounten Sie diese Volumes auf Pfade innerhalb Ihrer Docker-Container mit mountPoints in der Containerdefinition.

Elastic Beanstalk konfiguriert zusätzliche Volumes für Protokolle, eines für jeden Container. Diese sollten von Ihren Docker-Containern bereitgestellt werden, um Protokolle an die Host-Instance zu schreiben.

Weitere Informationen finden Sie in dem mountPoints-Feld im folgenden Abschnitt Container-Definitionsformat.

Format der Containerdefinition

Die folgenden Beispiele zeigen eine Teilmenge von Parametern, die in diesem containerDefinitionsAbschnitt häufig verwendet werden. Weitere optionale Parameter sind verfügbar.

Die Beanstalk-Plattform erstellt eine ECS Aufgabendefinition, die eine ECS Containerdefinition enthält. Beanstalk unterstützt eine Teilmenge von Parametern für die Containerdefinition. ECS Weitere Informationen finden Sie unter Container-Definitionen im Entwicklerhandbuch für Amazon Elastic Container Service.

Eine Dockerrun.aws.json-Datei enthält ein Array aus einem oder mehreren Containerdefinitionsobjekten mit den folgenden Feldern:

Name

Name des Containers. Weitere Informationen über die maximale Länge und die zulässigen Zeichen finden Sie unter Standardparameter für Containerdefinition.

Abbild

Der Name eines Docker-Image in einem Online-Docker-Repository, aus dem Sie einen Docker-Container erstellt haben. Beachten Sie diese Konventionen:

  • Abbilder in offiziellen Repositorys in Docker Hub verwenden einen einzelnen Namen (z. B. ubuntu oder mongo).

  • Images in anderen Repositorys in Docker Hub sind mit einem Organisationsnamen qualifiziert (z. B, amazon/amazon-ecs-agent.

  • Abbilder in anderen Online-Repositorys sind durch einen Domänennamen zusätzlich qualifiziert (z. B, quay.io/assemblyline/ubuntu).

Umgebung

Ein Array an Umgebungsvariablen, die an den Container übergeben werden.

Der folgende Eintrag definiert beispielsweise eine Umgebungsvariable mit dem Namen Container und dem Wert PHP:

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

„true“, wenn die Aufgabe stoppen soll, wenn der Container fehlschlägt. Unwesentliche Container können abschließen oder abstürzen, ohne dass dies Auswirkungen auf die restlichen Container in der Instance hat.

memory

Größe des Speichers auf der Container-Instance, die für den Container reserviert werden soll. Geben Sie eine Ganzzahl ungleich null für einen oder beide der Parameter memory oder memoryReservation in Containerdefinitionen an.

memoryReservation

Die weiche Arbeitsspeichergrenze (in MiB) für die Reservierung für den Container. Geben Sie eine Ganzzahl ungleich null für einen oder beide der Parameter memory oder memoryReservation in Containerdefinitionen an.

mountPoints

Volumes aus der EC2 Amazon-Container-Instance, die bereitgestellt werden sollen, und der Speicherort im Docker-Container-Dateisystem, an dem sie bereitgestellt werden sollen. Wenn Sie Volumes mounten, die mit Anwendungs-Inhalte enthalten, kann Ihr Container die Daten lesen, die Sie in Ihrem Quell-Bundle hochladen. Wenn Sie Protokoll-Volumes für das Schreiben von Protokolldaten mounten, kann Elastic Beanstalk Protokolldaten von diese Volumes erfassen.

Elastic Beanstalk erstellt Protokoll-Volumes auf der Container-Instance, eines für jeden Docker-Container, unter /var/log/containers/containername. Diese Volumes haben die Bezeichnung awseb-logs-containername und sollten in das Verzeichnis innerhalb der Container-Dateistruktur bereitgestellt werden, in dem Protokolle geschrieben werden.

Beispiel: Der folgende Mounting-Punkt weist den nginx-Protokoll-Standort im Container dem von Elastic Beanstalk generierten Volume für den nginx-proxy-Container zu.

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

Ordnet Netzwerk-Ports auf dem Container Ports auf dem Host zu.

links

Liste der Container, zu denen Link erstellt werden soll. Verknüpfte Container können sich gegenseitig erkennen und sicher kommunizieren.

volumesFrom

Mounten aller Volumes aus einem anderen Container. Zum Beispiel zum Mounten von Volumes aus einem Container mit dem Namen web:

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

Authentifizierungsformat – Verwenden von Images aus einem privaten Repository

Der authentication-Abschnitt enthält Authentifizierungsdaten für ein privates Repository. Dieser Eintrag ist optional.

Fügen Sie die Informationen über den Amazon S3-Bucket hinzu, der die Authentifizierungsdatei im authentication-Parameter der Dockerrun.aws.json-Datei enthält. Stellen Sie sicher, dass der authentication-Parameter einen gültigen Amazon S3-Bucket und -Schlüssel enthält. Der Amazon S3-Bucket muss in derselben Region gehostet sein wie die Umgebung, die ihn verwendet. Elastic Beanstalk lädt keine Dateien von Amazon S3-Buckets herunter, die in anderen Regionen gehostet werden.

Verwendet das folgende Format:

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

Weitere Informationen zum Generieren und Hochladen der Authentifizierungsdatei finden Sie unter Verwenden von Bildern aus einem privaten Repository in Elastic Beanstalk.

Beispiel Dockerrun.aws.json v2

Der folgende Codeausschnitt ist ein Beispiel, das die Syntax der Dockerrun.aws.json-Datei für eine Instance mit zwei Containern zeigt.

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