Ich versuche, php integrierten Server ( php -S localhost:8080
) über Docker laufen zu lassen, ich kann jedoch nicht vom Host auf die Seite zugreifen - ich habe immer eine Verbindung zurückgesetzt.
Hier ist ein einfaches Dockerfile, auf dem ich baue:
%Vor%Ist es überhaupt möglich, diesen Server mit docker auszuführen? Während ich versuchte, es zum Laufen zu bringen, fand ich heraus, dass, wenn nginx installiert und auf diesen Port eingestellt war, es vom Host aus erreichbar ist. Der integrierte PHP-Server scheint vor dem Host verborgen zu sein, kann also keine Anfragen beantworten.
Hat jemand diese Arbeit erfolgreich gemacht?
Wenn Sie innerhalb des Docker-Containers Ihren Webserver mit php -S localhost:8080
starten, akzeptiert der Webserver nur Verbindungen, die vom Docker-Container selbst stammen.
Um mit dem Webserver über den Docker-Host kommunizieren zu können, müssen Sie zwei Änderungen vornehmen:
EXPOSE 8080
hinzu, oder fügen Sie beim Ausführen des Containers -p 8080
zur Befehlszeile docker run
hinzu. Dies teilt dem Docker-Host mit, dass Ihr Container ein Programm hat, das die Kommunikation auf Port 8080 erwartet php -S 0.0.0.0:8080
, damit auch Verbindungen von außerhalb des Andockcontainers selbst akzeptiert werden Sobald ein Container mit diesen Änderungen ausgeführt wird, öffnen Sie ein neues Terminal auf dem Docker-Host und verwenden Sie den Befehl docker ps
, um zu sehen, welcher Port auf dem Docker-Host an Port 8080 im Container weitergeleitet wird. Zum Beispiel:
In diesem Beispiel soll der Port 49153
des Andock-Hosts verwendet werden. Dann fragen Sie Ihren Webserver ab, um zu bestätigen, dass Sie mit ihm kommunizieren können:
$ curl http://localhost:49153