Ich habe zwei Dienste in getrennten Containern, einer ist grunt (Anwendung) und läuft von Port 9000 und der andere ist sails.js (Server), der von Port 1337 läuft. Was ich versuchen möchte, ist der Client App verbinden Sie sich mit dem Server über localhost: 1337. Ist das machbar? Danke.
Sie können keine Verbindung mit dem anderen Container mit localhost
herstellen (da localhost
der aktuelle Container ist). Sie können jedoch eine Verbindung über den Container-Host (den Host, auf dem der Container ausgeführt wird) herstellen. In Ihrem Fall benötigen Sie boot2docker VM IP ( echo $(boot2docker ip)
). Damit dies funktioniert, müssen Sie Ihren Port auf der Host-Ebene verfügbar machen (was Sie mit -p 1337:1337
tun).
Eine andere Lösung, die am gebräuchlichsten ist und die ich bevorzuge, ist die Verknüpfung der Container.
Sie müssen dem Server docker run
-Befehl das Flag --name hinzufügen:
--name sails_server
Sie müssen das Flag --link zum Befehl docker run
hinzufügen:
--link sails_server:sails_server
Und in Ihrer Anwendung können Sie auf den Server unter sail_server:1337
zugreifen.
Sie können auch Umgebungsvariablen verwenden, um die Server-IP zu erhalten. Siehe Dokumentation: Ссылка
Deine Laufbefehle beginnen vielleicht etwas lang zu sein ... in diesem Fall benutze ich gerne docker-compose Dadurch kann ich meine Container und ihre Beziehungen (Volumes, Namen, Links, Befehle ...) in einer Datei definieren.
Ja, wenn Sie den Docker-Parameter -p 1337: 1337 im Befehl docker run verwenden, wird der Port 1337 aus dem Container zu Ihrem localhost: 1337
freigegebenTags und Links docker sails.js boot2docker