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.
Themen
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?
-
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 zurdocker-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 zurDockerfile
-Datei finden Sie auf der Docker-Website in der Dockerfile-Referenz. -
Möglicherweise müssen Sie eine
.zip
Datei erstellen. Wenn Sie nur eineDockerfile
Datei für die Bereitstellung Ihrer Anwendung verwenden, müssen Sie keine erstellen. Wenn Sie zusätzliche Konfigurationsdateien verwenden, muss die ZIP-Datei diedocker-compose.yml
DateiDockerfile
, Ihre Anwendungsdateien und alle Abhängigkeiten von Anwendungsdateien enthalten. DieDockerfile
und diedocker-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
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 ein
Dockerfile
, 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, dieDockerfile
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 AnwendungsdateienDockerfile
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.json
v1-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, wirddocker 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 isttrue
. 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 derDockerrun.aws.json
-Datei nicht an. Elastic Beanstalk erstellt und verwendet immer das Image, das inDockerfile
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 verwenden
Dockerfile
, sollte der erste ContainerPortWert mit dem ersten Eintrag in derDockerfile
s-Liste übereinstimmen. EXPOSEOptional 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 CMD
in der Docker-Dokumentation. - Eintrittspunkt
-
Geben Sie einen Standard-Befehl an, der ausgeführt werden soll, wenn der Container gestartet wird. Weitere Informationen finden Sie ENTRYPOINT
in 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
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