2016-11-17 8 views
1

DockerfileDocker: Warum Portweiterleitung funktioniert nicht mit Go-Tour?

FROM golang:latest 
EXPOSE 3999 
ENTRYPOINT ["go", "tool", "tour"] 

Es beginnt die Go Tour bei http://localhost:3999

Ich laufe es mit Docker run -d -p 127.0.0.1:3999:3999 "hubusername/docker-tour:v1"

Aber $ curl http://localhost:3999 einen Fehler zurück:
curl: (56) Recv Versagen : Verbindung zurückgesetzt durch Peer

Natürlich funktioniert ip: 3999 im Browser auch nicht.

p.s. docker run -d -p 8081:80 nginx:alpine funktioniert perfekt

+2

Es ist wahrscheinlich, weil die Go-Tour nur an die lokale IP-Adresse des Containers (127.0.0.1) gebunden ist und nicht an die externe IP-Adresse, die mit "-p" weitergeleitet wird. – afontaine

+0

@afontaine Darf ich -p auf 127.0.0.1 weiterleiten? –

+2

Es gibt wahrscheinlich eine Option, die 'go tour' ermöglicht, an eine andere IP-Adresse zu binden. Wenn Sie "0.0.0.0" an diese Option übergeben, werden normalerweise alle IP-Adressen gebunden. Gibt es eine '-h' oder eine' -host' Option? – afontaine

Antwort

2

Ok, ich habe gerade ein 0.0.0.0 Host setted durch das Hinzufügen dieser Zeile Tour Anwendung zu gehen:

CMD ["-http", "0.0.0.0:3999", "-openbrowser=false"]

0

habe ich diese Arbeit den Standard golang Behälter mit mit:

docker run --rm -p 3999:3999 golang go tool tour -http 0.0.0.0:3999 -openbrowser=false