7

Ich führe eine Elasticbeanstalk-Anwendung mit mehreren Umgebungen aus. Diese spezielle Anwendung hostet Docker-Container, die einen Webservice hosten.Bereitstellen in Elasticbeanstalk über den CLI-Befehl deploy mit Dockerrun.aws.json

Um eine neue Version der Anwendung in eine der Umgebungen zu laden und bereitzustellen, kann ich den Webclient durchlaufen und auf "Upload and Deploy" klicken und aus der Dateioption die letzte Dockerrun.aws.json Datei auswählen , die auf die neueste Version des Containers verweist, der privat gehostet wird. Das Hochladen und Deployment funktioniert gut und ohne Probleme.

Um die Bereitstellung für mich und andere zu vereinfachen, möchte ich die CLI zum Hochladen und Bereitstellen der Datei Dockerrun.aws.json verwenden können. Wenn ich den Befehl cli eb deploy ohne spezielle Konfiguration benutze, wird der normale Vorgang des Zippens der gesamten Anwendung und des Sendens an den Host ausgeführt und schlägt fehl (es kann nicht nachvollziehen, dass es nur die Datei Dockerrun.aws.json lesen muss).

Ich fand eine Dokumentation über die Kontrolle, was hochgeladen wird mit der .elasticbeanstalk/config.yml-Datei.

Mit dieser Syntax:

deploy: artifact: Dockerrun.aws.json

Die Datei hochgeladen und tatsächlich setzt erfolgreich auf die erste Partie der Instanzen und dann nicht immer auf den zweiten Satz von Instanzen zu implementieren.

Der Fehlerfehler ist der Geschmack: ‚Container unerwartet beendet ...‘

Kann mir jemand erklären, oder einen Link zu der kanonischen Ansatz bieten die CLI für die Verwendung von einzelnen Docker Container-Anwendungen zu implementieren?

Antwort

1

So stellt sich heraus, dass die Methode, die ich aufgelistet etwa mit dem config.yml richtig war. Der Grund für die teilweise erfolgreiche Bereitstellung war, dass der zuvor ausgeführte Andockcontainer auf den Hosts nicht von EB gestoppt wurde.

Ich denke, dass das, was geschah, dass EB etwas wie

sudo docker kill --signal=SIGTERM $CONTAINER_ID anstelle der häufigeren sudo docker stop $CONTAINER_ID

Die spezifische Behälter sendet ich ausgeführt wurde, nicht zu SIGTERM ansprachen und so wäre es nur sitzen Dort. Wenn ich es lokal mit SIGKILL getestet habe, würde es (offensichtlich) richtig aufhören, aber SIGTERM allein würde es nicht aufhalten.

Das Problem war nicht die Bereitstellungsmethodik, sondern eher Verwirrung in der Ausgabe, die EB generierte und meine Fehlinterpretation.

0

Da Sie nach einem Link gefragt haben, stelle ich einen Link zur Verfügung, den ich anfänglich verwendet habe, um docker erfolgreich mit elasticbeanstalk cli zu testen und zu implementieren. siehe

freundlich, wenn dies Sie hilft auch: https://fangpenlin.com/posts/2014/11/25/running-docker-with-aws-elastic-beanstalk/

+0

Guter Artikel - viele hilfreiche Informationen. Ich war dem vorher nicht begegnet. –

+2

Schade, dass die Verbindung tot ist. – neverfox

+0

Der richtige Link ist: https://fangpenlin.com/posts/2014/11/25/running-docker-with-aws-elastic-beanstalk/ –

Verwandte Themen