2017-05-20 4 views
2

ich ein Docker-Container auf meinem System laufen haben, die ich mit diesem Befehl gestartet:kann keine Verbindung Server django innerhalb Docker Behälter (Docker für mac) läuft

:

docker run -it -v ~/some/dir -p 8000:80 3cce3211b735 bash 

Jetzt ps verzeichnet diese Andockfenster

CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS            NAMES 
44de7549d38e  3cce3211b735  "bash"    14 minutes ago  Up 14 minutes  22/tcp, 443/tcp, 8082/tcp, 0.0.0.0:8000->80/tcp hardcore_engelbart 

im Inneren des Behälters ich meine django app mit dem Befehl ausführen: python manage.py runserver 80

Aber ich bin nicht in der Lage, die Seite über die Verwendung eines von diesen zu lesen:

1. localhost:8000

2. 127.0.0.1:8000

Ich verstehe, dass meine 8000-Port zu Port 80 auf dem Behälter zugeordnet ist. Aber warum kann ich nicht darauf zugreifen? Ich benutze Docker für Mac nicht Docker Toolbox. Bitte helfen Sie und kommentieren Sie, wenn Sie weitere Informationen benötigen.

+0

Und verbinden mit nur 'localhost' – doru

+0

@doru die Zuordnung war nicht das Problem. Danke für deine Hilfe trotzdem. Ich habe die Antwort geschrieben, die für mich funktioniert hat. –

Antwort

2

Okay, ich fand die Lösung für mein Problem. Das Problem war nicht im Docker-Port-Mapping. Das eigentliche Problem ist diese Zeile:

python manage.py runserver 80 

Dies führt den Server auf 127.0.0.1:80. Der Localhost im Andock-Container ist nicht der lokale Host auf Ihrem Computer. Die Lösung führt den Server mit diesem Befehl aus:

python manage.py runserver 0.0.0.0:80 

Ich konnte danach auf die Webseite zugreifen. Wenn das gleiche Problem auftritt, bei dem Sie keine Verbindung zu dem Django-Server herstellen können, der in Ihrem Docker-Container ausgeführt wird, sollten Sie versuchen, den Server unter 0.0.0.0:port auszuführen. Sie können in Ihrem Browser unter localhost:port darauf zugreifen. Hoffe, das hilft jemandem.

Verwandte Themen