3

Ich habe:Wie kann ich einen nginx Reverse-Proxy-Container auf ECS laufen eine leicht modifizierte Version des Behälters hier verwendet Argumente

es

http://jasonwilder.com/blog/2014/03/25/automated-nginx-reverse-proxy-for-docker/

So führen lokal ich benutze:

$ docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock -t jwilder/nginx-proxy 

Und meine anderen Behälter ähnlich wie folgt:

$ docker run -e VIRTUAL_HOST=my-domain.local -t -d my-repo/site-name 

Ich habe Probleme con vertend dies zu einer Task Definition auf ECS.

Aufgabenstellung

Ich habe zwei Behälter:

nginx-Reverse-Proxy-

  • Port-Mappings: Host 80 Container 80
  • Wesentliche: true
  • Befehl: /app/docker-entrypoint.sh

statisch-Website

  • Port-Mappings: Host 5000 Container 5000
  • Essential: falsche
  • Befehl: /some-file.sh
  • Env Vars: VIRTUAL_HOST static.example.com

Ich habe einen Cluster mit einer ECS-Instanz und einem Server mit einer oben definierten Aufgabe. Dies hält den Zyklus und schlägt mit "STOPPED (Essential Container in Task exited)" fehl.

Jetzt gehe ich davon aus, dass ich Volumes einrichten muss, aber alle Beispiele, die ich finden kann, haben einen Pfad und einen Namen und ich kann nicht sehen, wie ich das konvertieren kann "/var/run/docker.sock:/tmp/docker .sock "in alle verfügbaren Felder.

+0

Dumme Frage, aber kann dies nicht auch mit den ELB/ALB Load Balancern von AWS erreicht werden? Warum nginx benutzen? – codepushr

+0

AWS berechnet * viel * für die ELBs. Da Sie möglicherweise einen für jeden Container benötigen, den Sie auf ECS ausführen, summiert er sich schnell zu Hunderten von Dollar pro Monat, nur für ELBs, wenn Sie viele kleine Dienste haben. – BjornW

Antwort

3

Ich bin ziemlich spät, aber ich werde trotzdem für Leute antworten, die in der Zukunft auf diesen Post stoßen.

Sie haben sich selbst geantwortet. Es schlägt fehl, weil Sie den Docker-Socket nicht vom Host aus freigeben, was für das Nginx-Proxy-Image wesentlich ist.

Gehen Sie zu Ihrer Taskdefinition und fügen Sie ein neues Volume hinzu. Benennen Sie es Socket und geben Sie den Host-Pfad /var/run/docker.sock. Bearbeiten Sie dann Ihren Nginx-Proxy-Container und wählen Sie unter Bereitstellungspunkte den Socket als Quelldatenträger und /tmp/docker.sock als Containerpfad. Markieren Sie es aus Sicherheitsgründen auch nur als gelesen. Übernehmen Sie den Befehl für diesen Container mit dem Standardwert.

Stellen Sie Ihre neue Revision bereit und es sollte jetzt funktionieren.