Vorbereiten Ihres Docker-Images für die Bereitstellung auf Elastic Beanstalk - 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.

Vorbereiten Ihres Docker-Images für die Bereitstellung auf Elastic Beanstalk

In diesem Abschnitt wird beschrieben, wie Sie Ihr Docker-Image für die Bereitstellung auf Elastic Beanstalk vorbereiten, wenn entweder Docker läuft AL2 oder AL2 023 Platform Branches. Welche Konfigurationsdateien Sie benötigen, hängt davon ab, ob Ihre Images lokal oder remote sind und ob Sie Docker Compose verwenden.

Anmerkung

Ein Beispiel für ein Verfahren, mit dem eine Docker-Umgebung gestartet wird, finden Sie im QuickStart für Docker Thema.

Verwaltung Ihrer Bilder mit Docker Compose in Elastic Beanstalk

Sie können Docker Compose verwenden, um verschiedene Dienste in einer Datei zu verwalten. YAML Weitere Informationen zu Docker Compose finden Sie unter Warum Compose verwenden? auf der Docker-Website.

  • Erstellen Sie einen docker-compose.yml. Diese Datei ist erforderlich, wenn Sie Docker Compose verwenden, um Ihre Anwendung mit Elastic Beanstalk zu verwalten. Wenn all Ihre Deployments aus Images in öffentlichen Repositorys stammen, sind keine weiteren Konfigurationsdateien erforderlich. Wenn sich die Quell-Images Ihrer Bereitstellung in einem privaten Repository befinden, müssen Sie einige zusätzliche Konfigurationen vornehmen. Weitere Informationen finden Sie unter Verwenden von Bildern aus einem privaten Repository. Weitere Informationen zur docker-compose.yml-Datei finden Sie auf der Docker-Website in der Referenz zu Compose-Dateien.

  • Das Dockerfile ist optional. Erstellen Sie eines, wenn Sie Elastic Beanstalk benötigen, um ein lokales benutzerdefiniertes Image zu erstellen und auszuführen. Weitere Informationen zur Dockerfile-Datei finden Sie auf der Docker-Website in der Dockerfile-Referenz.

  • Möglicherweise müssen Sie eine .zip Datei erstellen. Wenn Sie nur eine Dockerfile Datei für die Bereitstellung Ihrer Anwendung verwenden, müssen Sie keine erstellen. Wenn Sie zusätzliche Konfigurationsdateien verwenden, muss die ZIP-Datei die docker-compose.yml DateiDockerfile, Ihre Anwendungsdateien und alle Abhängigkeiten von Anwendungsdateien enthalten. Die Dockerfile und die docker-compose.yml müssen sich im Stammverzeichnis oder auf der obersten Ebene des ZIP-Archivs befinden. Wenn Sie das EB CLI zur Bereitstellung Ihrer Anwendung verwenden, erstellt es eine ZIP-Datei für Sie.

Weitere Informationen zu Docker Compose und zur Installation von Docker Compose finden Sie auf den Docker-Websites Overview of Docker Compose und Install Docker Compose.

Verwaltung von Bildern ohne Docker Compose in Elastic Beanstalk

Wenn Sie Docker Compose nicht zur Verwaltung Ihrer Docker-Images verwenden, müssen Sie eineDockerfile, eine Datei oder beides konfigurieren. Dockerrun.aws.json

  • Erstellen Sie einDockerfile, um Elastic Beanstalk ein benutzerdefiniertes Image erstellen und lokal ausführen zu lassen.

  • Erstellen Sie eine Dockerrun.aws.json v1-Datei, um ein Docker-Image aus einem gehosteten Repository für Elastic Beanstalk bereitzustellen.

  • Möglicherweise müssen Sie eine .zip Datei erstellen. Wenn Sie nur eine der beiden Dateien, die Dockerfile oder dieDockerrun.aws.json, verwenden, müssen Sie keine ZIP-Datei erstellen. Wenn Sie beide Dateien verwenden, benötigen Sie eine ZIP-Datei. Die ZIP-Datei muss sowohl das als auch das enthaltenDockerrun.aws.json, zusammen mit der Datei, die Ihre Anwendungsdateien Dockerfile und alle Abhängigkeiten von Anwendungsdateien enthält. Wenn Sie die EB CLI zur Bereitstellung Ihrer Anwendung verwenden, wird eine .zip Datei für Sie erstellt.

Dockerrun.aws.jsonv1-Konfigurationsdatei

Eine Dockerrun.aws.json-Datei beschreibt, wie ein Remote-Docker-Image als Elastic Beanstalk-Anwendung bereitgestellt wird. Diese JSON Datei ist spezifisch für Elastic Beanstalk. Wenn Ihre Anwendung auf einem Bild ausgeführt, das in einem gehosteten Repository verfügbar ist, können Sie das Image in einer Dockerrun.aws.json v1-Datei angeben und die Dockerfile auslassen.

Dockerrun.aws.json-Versionen

Der AWSEBDockerrunVersion-Parameter gibt die Version der Dockerrun.aws.json-Datei an.

  • Die Plattformen Docker AL2 und AL2 023 verwenden die folgenden Versionen der Datei.

    • Dockerrun.aws.json v3— Umgebungen, die Docker Compose verwenden.

    • Dockerrun.aws.json v1— Umgebungen, die Docker Compose nicht verwenden.

  • ECSläuft auf Amazon Linux 2 und ECSläuft auf AL2 023, verwendet die Dockerrun.aws.json v2 Datei. Die ausgemusterte Plattform ECS-The Multicontainer Docker Amazon Linux AMI (AL1) verwendete ebenfalls dieselbe Version.

Zu den gültigen Schlüsseln und Werten für die Dockerrun.aws.json v1-Datei zählen unter anderem folgende Vorgänge:

AWSEBDockerrunVersion

(Erforderlich) Geben Sie die Versionsnummer an, 1 wenn Sie Docker Compose nicht zur Verwaltung Ihres Images verwenden.

Authentifizierung

(Nur erforderlich für private Repositorys) Gibt das Amazon S3-Objekt an, in dem die .dockercfg-Datei gespeichert ist.

Weitere Informationen finden Sie Verwenden von Bildern aus einem privaten Repository in Elastic Beanstalk unter Verwenden von Bildern aus einem privaten Repository weiter unten in diesem Kapitel.

Image

Gibt das Docker-Basis-Image auf einem vorhandenen Docker-Repository an, aus dem Sie einen Docker-Container erstellt haben. Geben Sie den Wert des Namensschlüssels im folgenden Format an <organization>/<image name> für Bilder auf Docker Hub, oder <site>/<organization name>/<image name> für andere Websites.

Wenn Sie ein Image in der Dockerrun.aws.json-Datei angeben, wird docker pull von jeder Instance Ihrer Elastic Beanstalk-Umgebung ausgeführt, um das Image auszuführen. Sie können optional den Update-Schlüssel einschließen. Der Standardwert ist true. Er weist Elastic Beanstalk an, das Repository zu prüfen, Updates auf das Image abzurufen und alle zwischengespeicherten Images zu überschreiben.

Geben Sie, wenn Sie eine Dockerfile verwenden, den Image-Schlüssel in der Dockerrun.aws.json-Datei nicht an. Elastic Beanstalk erstellt und verwendet immer das Image, das in Dockerfile Beschrieben ist, wenn eines vorhanden ist.

Ports

(Erforderlich, wenn Sie den Image-Schlüssel angeben) Listet die Ports auf, die auf dem Docker-Container bereitgestellt werden sollen. Elastic Beanstalk verwendet den ContainerPortWert, um den Docker-Container mit dem Reverse-Proxy zu verbinden, der auf dem Host ausgeführt wird.

Sie können mehrere Container-Ports angeben, von Elastic Beanstalk wird aber nur der erste Port verwendet. Dieser Port wird verwendet, um Ihren Container mit dem Reverse-Proxy des Hosts zu verbinden und Anforderungen aus dem öffentlichen Internet weiterzuleiten. Wenn Sie a verwendenDockerfile, sollte der erste ContainerPortWert mit dem ersten Eintrag in der Dockerfile s-Liste übereinstimmen. EXPOSE

Optional können Sie eine Liste von Anschlüssen in angeben HostPort. HostPortEinträge geben die Host-Ports an, denen ContainerPortWerte zugeordnet sind. Wenn Sie keinen HostPortWert angeben, wird standardmäßig der ContainerPortWert verwendet.

{ "Image": { "Name": "image-name" }, "Ports": [ { "ContainerPort": 8080, "HostPort": 8000 } ] }
Datenträger

Ordnen Sie Volumes aus einer EC2 Instanz Ihrem Docker-Container zu. Geben Sie ein oder mehrere Volume-Arrays für die Zuordnung an.

{ "Volumes": [ { "HostDirectory": "/path/inside/host", "ContainerDirectory": "/path/inside/container" } ] ...
Protokollierung

Geben Sie das Verzeichnis im Container an, in das Ihre Anwendung Protokolle schreibt. Elastic Beanstalk lädt alle Protokolle in dieses Verzeichnis in Amazon S3 hoch, wenn Sie Protokollfragmente oder Bundle-Protokolle anfordern. Wenn Sie Protokolle zu einem Ordner mit dem Namen rotated in diesem Verzeichnis rotieren, können Sie auch Elastic Beanstalk so konfigurieren, dass rotierte Protokolle für eine dauerhafte Speicherung in Amazon S3 hochgeladen werden. Weitere Informationen finden Sie unter Logs von EC2 Amazon-Instances in Ihrer Elastic Beanstalk Beanstalk-Umgebung anzeigen.

Befehl

Geben Sie einen Befehl an, der im Container ausgeführt werden soll. Wenn Sie einen Entrypoint (Eintrittspunkt) angeben, dann wird Command (Befehl) als Argument für Entrypoint (Eintrittspunkt) hinzugefügt. Weitere Informationen finden Sie CMDin der Docker-Dokumentation.

Eintrittspunkt

Geben Sie einen Standard-Befehl an, der ausgeführt werden soll, wenn der Container gestartet wird. Weitere Informationen finden Sie ENTRYPOINTin der Docker-Dokumentation.

Der folgende Codeausschnitt ist ein Beispiel, das die Syntax der Dockerrun.aws.json-Datei für einen einzelnen Container.

{ "AWSEBDockerrunVersion": "1", "Image": { "Name": "janedoe/image", "Update": "true" }, "Ports": [ { "ContainerPort": "1234" } ], "Volumes": [ { "HostDirectory": "/var/app/mydb", "ContainerDirectory": "/etc/mysql" } ], "Logging": "/var/log/nginx", "Entrypoint": "/app/bin/myapp", "Command": "--argument" }>

Sie können Elastic Beanstalk nur mit der Dockerrun.aws.json-Datei oder mit einem .zip-Archiv bereitstellen, das sowohl die Dockerrun.aws.json-Datei als auch die Dockerfile-Datei enthält. Wenn Sie beide Dateien bereitstellen, beschreibt die Dockerfile das Docker-Image und die Datei Dockerrun.aws.json bietet zusätzliche Informationen für die Bereitstellung. Einzelheiten dazu finden Sie weiter unten in diesem Abschnitt.

Anmerkung

Die beiden Dateien müssen sich im Stammverzeichnis oder im oberste Level des .zip-Archivs befinden. Erstellen Sie kein Archiv aus einem Verzeichnis, das die Dateien enthält. Navigieren Sie stattdessen zu dem Verzeichnis und erstellen Sie das Archiv dort.

Wenn Sie die beide Dateien bereitstellen, geben Sie kein Image in der Datei Dockerrun.aws.json an. Elastic Beanstalk erstellt und verwendet das Image, das in Dockerfile beschrieben wird, und ignoriert das in der Datei Dockerrun.aws.json angegebene Image.

Erstellen benutzerdefinierter Images mit einer Dockerfile-Datei

Falls Sie noch nicht über ein in einem Repository gehostetes Image verfügen, müssen Sie eine Dockerfile erstellen.

Der folgende Codeausschnitt ist ein Beispiel für die Dockerfile. Wenn Sie die Anweisungen in QuickStart für Docker befolgen, können Sie die Dockerfile wie beschrieben hochladen. Elastic Beanstalk führt das Spiel 2048 aus, wenn Sie diese verwende Dockerfile.

Weitere Informationen zu den Anweisungen, die Sie in die Dockerfile einschließen können, finden Sie unter Dockerfile-Referenz auf der Docker-Website.

FROM ubuntu:12.04 RUN apt-get update RUN apt-get install -y nginx zip curl RUN echo "daemon off;" >> /etc/nginx/nginx.conf RUN curl -o /usr/share/nginx/www/master.zip -L https://codeload.github.com/gabrielecirulli/2048/zip/master RUN cd /usr/share/nginx/www/ && unzip master.zip && mv 2048-master/* . && rm -rf 2048-master master.zip EXPOSE 80 CMD ["/usr/sbin/nginx", "-c", "/etc/nginx/nginx.conf"]
Anmerkung

Sie können mehrstufige Builds aus einer einzigen Dockerfile ausführen, um kleinere Images mit einer signifikanten Verringerung der Komplexität zu erzeugen. Weitere Informationen finden Sie unter Verwenden mehrstufiger Builds auf der Docker-Dokumentationswebsite.