2017-06-26 11 views
0

Hallo Ich benutze Vagrant und Docker-Compose, um eine einfache Web-App zu betreiben. Es funktioniert gut mit OSX, aber wenn es in einer vagrant box (Ubuntu/trusty64) getan wird, wird es nicht funktionieren.Zugriff Docker Container läuft in Vagrant

Ich möchte nicht den Docker-Provider für Vagrant verwenden, da ich dies für einen anderen Bereitstellungstyp testen. Dies sollte funktionieren, da ich genau dasselbe mache wie auf meinem lokalen Rechner.

Warum kann ich nicht Localhost-Port 80 (oder einen Port, den ich ausprobiert habe) auf der App?

[email protected]:/home/vagrant/slack-challenge# docker ps 
CONTAINER ID  IMAGE     COMMAND     CREATED    STATUS    PORTS     NAMES 
03f4740887d7  slackchallenge_nginx "/bin/sh -c 'servi..." 43 minutes ago  Up 12 minutes  0.0.0.0:8080->80/tcp slackchallenge_nginx_1 
ed80831b69a9  slackchallenge_fpm  "/usr/bin/supervisord" 43 minutes ago  Up 12 minutes  9000/tcp    slackchallenge_fpm_1 
140ea815843b  mariadb    "docker-entrypoint..." 43 minutes ago  Up 12 minutes  3306/tcp    slackchallenge_db_1 
[email protected]:/home/vagrant/slack-challenge# curl localhost 
curl: (7) Failed to connect to localhost port 80: Connection refused 
[email protected]:/home/vagrant/slack-challenge# 

scheint wie etwas Netzwerky.

Antwort

0

ja, ich brauche nur Portforwarding zu aktivieren, wie so:

config.vm.network "forwarded_port", guest: 8080, host: 8080, host_ip: "127.0.0.1" 

Und jetzt kann ich auf meinem lokal Port 80, eine Verbindung, die in meinem vagrant vm eigentlich in meinem Docker Behälter läuft, eine Art verwirrend.

$ curl localhost:8080 
Hello, world! 
0

In Ihrem Beispiel, ist es wie der einzige Behälter sieht, die ausgeführt werden, dass ein veröffentlichter Bericht ist wie folgt:

CONTAINER ID  IMAGE     COMMAND     CREATED    STATUS    PORTS     NAMES 
03f4740887d7  slackchallenge_nginx "/bin/sh -c 'servi..." 43 minutes ago  Up 12 minutes  0.0.0.0:8080->80/tcp slackchallenge_nginx_1 

Unter der Spalte PORTS, dies zeigt an, dass der Port des Host-8080 dem Port 80 des Containers zugeordnet. Bei dieser Konfiguration würde ich erwarten, dass curl localhost:8080 anstelle von curl localhost funktioniert, weil es der Port 8080 des Hosts ist, der auf Listening eingestellt ist.

Wenn Sie möchten, dass der Port 80 des Containers auf dem Port 80 des Hosts verfügbar ist, müssen Sie Port 80 auf Port 80 veröffentlichen.

Verwandte Themen