2017-02-07 1 views
0

Ich versuche eine Anwendung zu erstellen, die mehrere Ports in einem Docker-Image abhört.Wie kann auf mehrere Ports eines Docker-Containers im selben Container zugegriffen werden?

Im Moment habe ich ein Docker Bild mit einem Nginx-Server mit dem Front-End und einem Python-App: die Nginx läuft auf dem Port 27019 und die App läuft auf 5984.

Die Datei index.html hört auf localhost: 5984 aber es scheint, dass es nur außerhalb des Containers (auf dem localhost meines Computers) abhört.

Der einzige Weg, wie ich es im Moment arbeiten kann, ist die Verwendung der Option -p zweimal im Docker-Lauf: docker run -p 27019:27019 -p 5984:5984 app-test. Dadurch erzeuge ich zwei Localhost-Ports auf meinem Computer. Wenn ich die -p 5984:5984 nicht stelle, funktioniert es nicht. Ich habe vor, mehr Ports für die Anwendung zu verwenden. Daher möchte ich vermeiden, für jeden neuen Port -p xxx: xxx hinzuzufügen.

Wie kann ich eine Anwendung innerhalb des Containers (in diesem Fall die index.html bei 27019) einen anderen Port im selben Container abhören, ohne beide zu veröffentlichen? Kann es auf mehr als zwei Ports verallgemeinert werden? Das endgültige Ziel wäre eine vollständige Anwendung, die auf einem einzelnen Port auf einem Server/Computer ausgeführt wird, während mehrere Ports in Docker-Containern gehört werden.

Antwort

0

Es ist keine gute Sache, viele Anwendungen in einen Container zu packen, normalerweise sollte man das mit einem Container pro App teilen, so wie es genutzt werden sollte.

Aber wenn Sie absolut viele Anwendungen in einem Container verwenden möchten, können Sie Proxy verwenden oder eine Dockerdatei schreiben, die Ihre Ports selbst öffnet.

+0

Ja, das ist wahrscheinlich, was ich tun werde, aber wird es nicht mehrere Ports des Servers/localhost verwenden? – Corbac

+1

Ich bin nicht sicher zu verstehen, Sie möchten auf einen Port auf Ihrem Host auf Ihre Anwendungen zugreifen und es auf einen Port zu Ihrem Container zuordnen? Wenn es das ist, was Sie wollen, haben Sie viele Probleme ... Sie können den Proxy verwenden, um auf Ihre verschiedenen Ports zuzugreifen, die nur einem Port Ihres Containers zugeordnet sind. In jedem Fall müssen Sie jedoch viele '- p' flags ... Ich empfehle Ihnen wirklich, eine App pro Container zu verwenden. Wenn Sie mehrere Anwendungen in einer virtualisierten Maschine verwenden möchten, verwenden Sie eine klassische VM auf VirtualBox oder VMWare, wenn Sie sie haben ... –

Verwandte Themen