2016-05-27 6 views
2

Ich bin ein bisschen mit Xdebug, Dockarbeiter für Windows verwirrt und PhpStorm ...Wie Setup xdebug und PhpStorm mit Docker für Windows (Beta)

Ich habe Xdebug in einem Behälter mit PHP konfiguriert. Hier ist, was aus diesem Behälter in meiner php.ini erscheint:

xdebug.remote_enable=on 
xdebug.remote_autostart=off 
xdebug.idekey=PHPSTORM 
xdebug.remote_port=9000 
xdebug.remote_host=10.0.75.1 
# xdebug.remote_connect_back=1 

Mein Windows IP scheint, als von Docker gesehen 10.0.75.1 zu sein (PHP zeigt 10.0.75.1 für $ _SERVER [ 'REMOTE_ADDR'], wenn besucht von Windows). Es ist auch die virtuelle IP-Adresse des DockerNAT.

PhpStorm (unter Windows) mit Xdebug auf Port lauscht 9000. I Port 9000-9000 für diesen Container gebunden haben:

web: 
    build: php5 
    ports: 
     - "80:80" 
     - "9000:9000" 

Windows-Firewall ausgeschaltet ist. Dennoch erhält PHPStorm keine eingehende Verbindung von diesem Container.

Deshalb habe ich versucht, es aus verschiedenen Orten zu telnet:
wenn ich 10.0.75.1 9000 von Windows Telnet erfolgreich verbinden, wenn PhpStorm wird diesen Fehler zu hören und kehrt zurück, wenn er nicht hört: „an den Host kann keine Verbindung an Port 9000: Verbindung fehlgeschlagen ". Das macht Sinn.
Wenn ich von einem anderen Computer in meinem lokalen Netzwerk versuche, funktioniert Telnet 192.168.1.4 9000 einwandfrei.
Aber aus meiner Docker Web-Container, obwohl ich erfolgreich 10.0.75.1 und telnet diese IP auf Port 80 entweder ping (verbindet), auf Port 9000 es gibt einen Fehler zurück, ob PhpStorm oder nicht hört:

[email protected]:/var/www/html# telnet 10.0.75.1 9000 
Trying 10.0.75.1... 
telnet: Unable to connect to remote host: Connection timed out 

Ich habe versucht, Xdebug Port zu einigen zufälligen anderen Zahlen zu ändern, und es ändert nichts ...

Haben Sie eine Idee, was könnte dieses Problem verursachen?

+0

Haben Sie sich ähnliche Fragen angesehen: http://stackoverflow.com/questions/32668258/xdebug-windows-docker-phpstorm .. oder suchen Sie nach [phphstorm] docker xdebug' hier auf SO? – LazyOne

+0

Ja, aber ich hatte es mit Docker Maschine arbeiten. Setup ist anders mit Docker für Windows (Beta), die nativer läuft - ohne virtuelle Box. – kro

+0

Ich verstehe. Danke für die Klärung. – LazyOne

Antwort

1

Ich habe es endlich zur Arbeit gebracht! der Schlüssel network_mode eingestellt war Gastgeber:
https://docs.docker.com/compose/compose-file/

Docker-compose.yml:

version: '2' 

services: 
    web: 
     build: php5 
     ports: 
      - "80:80" 
     #links: 
     # - db:db 
     network_mode: "host" 
    db: 
     image: mysql 
     ports: 
      - "3306:3306" 
     environment: 
      - MYSQL_ROOT_PASSWORD=root 

danach versucht, bemerkte ich, dass meine Container eine Schnittstelle IPed hatte 192.168.65.2
so telneted i 192.168 .65.1 9000 und es hat funktioniert!

php.ini:

xdebug.idekey=PHPSTORM 
xdebug.remote_port=9000 
xdebug.remote_host=192.168.65.1 

i ausgewählt haben "Expose Containerhäfen auf localhost" (neue Option) in Docker Einstellungen.
ich kann wegen des angegebenen network_mode keine Links mehr verwenden. also habe ich Port 3306 geöffnet und ich muss 192.168.65.1 als mysql host wählen. Ich werde wahrscheinlich eine Workaround finden, aber schließlich funktioniert es!

+0

Ich frage mich, ob dieses Problem in der stabilen Version von Docker für Windows behoben ist.Ich kann Xdebug verwenden, wenn ich überbrückte Netzwerke verwende. Ich musste jedoch TCP-Port 9000 zu Verbindungen von 10.0.75.0/24 in der Windows-Firewall öffnen, bevor es zu arbeiten begann. – hjoelr

+0

Ja, ich bin zur stabilen Version gewechselt und ich habe dieses Problem nicht mehr, indem ich den Standard-Netzwerkmodus verwende. – kro

Verwandte Themen