PyCharm remote-Debuggen in einem docker-container
Ich habe eine harte Zeit versucht, herauszufinden, wie die Einrichtung eines remote-debug python-app (Kolben) läuft in einem Docker-container.
Speziell ich bin mit docker-Komponieren, PyCharm professional und python 3.5.
Dies ist, was ich bisher getan habe:
- Ich kopiert "pycharm-debug-py3k.ei" in den Ordner des Projekts
- Habe ich noch folgende Zeilen in die wsgi.py Datei:
import sys sys.Pfad.append('../pycharm-debug-py3k.ei') import pydevd pydevd.settrace('0.0.0.0', port=8200, stdoutToServer=True, stderrToServer=True)
- Erstellte ich eine remote-debug-Konfiguration PyCharm (durch die Abbildung der Weg von meiner lokalen Maschine Projekt-Pfad in den docker-container)
durch ausführen der debug-Konfiguration (klicken Sie auf das Fehler-Symbol) von PyCharm es druckt (und hängt):
Starting debug server at port 4200
Use the following code to connect to the debugger:
import pydevd
pydevd.settrace('0.0.0.0', port=4200, stdoutToServer=True, stderrToServer=True)
Waiting for process connection...
...und in die docker-container-Protokollen, die ich gelesen:
Konnte keine Verbindung zur 0.0.0.0: 4200
Was soll ich tun? (Mein Ziel ist es, in der Lage, fügen Sie Haltepunkte in PyCharm und stoppen Sie die Ausführung von docker-container-app, um zu Debuggen)
NÖ, ich bin nicht mit einem remote-Dolmetscher... sollte ich?
überprüfen Sie Ihre port-Nummer, sieht aus wie in Ihrer
wsgi.py
Datei, die Sie definiert pydevd.settrace('0.0.0.0', port=8200, stdoutToServer=True, stderrToServer=True)
aber der debug-server ausgeführt wird, auf 4200
, vielleicht eine änderung zu pydevd.settrace('0.0.0.0', port=4200, ...
funktioniert?InformationsquelleAutor daveoncode | 2017-01-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie eine remote-interpreter, das löst ein paar Probleme auf einmal. Ich bereits beantwortet diese hier Reich-Editoren, die in einem Docker-Entwicklungsumgebung
Hinzufügen eines remote-python-SDK, die IDE, das wird sich dann auch lösen, alle Bibliotheken installiert aus der Ferne. Benötigen Sie eine SSH-Verbindung, um dies getan, obwohl, so sshd installieren und verwenden Sie die freigegebene Entwickler-Schlüssel, die ich beschrieben in meiner Antwort.
Obwohl dies jetzt ein bisschen mehr Mühe geben, ich will geben Sie viel bessere Ergebnisse, auch in die anderen Abschnitte, die Sie noch nicht antreffen und finden, wenn Sie nur eine remote-port-Anschluss.
Wenn Sie immer noch wollen, verwenden Sie die port-basiertes debugging, siehe Andockfenster: MacOSX Aussetzen Container-ports auf host-Maschine - dies erklärt, wie sollten Sie verstehen, das Anhängen und das Zuhören Teil.
Denn das ist das übliche und jetzt nur so tun, ja. Sshd mit einem gemeinsamen Schlüssel für alle devs, für die DEV-Bilder nur natürlich. Ihr handeln wird der Sshd extra Mühe gegen die Lösung einer Reihe von Fragen auf einmal.
Nachdem ich die letzten 3 Stunden Lesen, ich Stimme zu. Was über reverse Tunneling einen port remote_host -> local_client, aufrufen, Anschluss aus der code-Ausführung im container (settrace) über die remote_host-bridge-IP (mit der remote-debugger ausführen von setup auf die IDE-auf local_client)(verwirrend, ich weiß, das ist, warum ich Neige dazu, mit Ihnen zu vereinbaren....)
InformationsquelleAutor Eugen Mayer
Verwenden
host.docker.internal
statt0.0.0.0
. Dies ermöglicht es docker, zu entscheiden, welche IP zu verwenden.InformationsquelleAutor Drew Rochon