Dockerコンテナで実行しているpython app(Flask)のリモートデバッグをセットアップする方法を見つけようとしています。具体的には、docker-compose、PyCharmプロフェッショナルを使用しています。そしてpython 3.5。これは私がこれまでにやったことです:
Wsgi.pyファイルに次の行を追加しました。
import sys
sys.path.append('../pycharm-debug-py3k.Egg')
import pydevd
pydevd.settrace('0.0.0.0', port=8200, stdoutToServer=True, stderrToServer=True)
PyCharmでリモートデバッグ構成を作成しました(ローカルマシンのプロジェクトパスのパスをdockerコンテナ内のパスにマッピングすることにより)
pyCharmからデバッグ構成を実行して(バグアイコンをクリック)、印刷(およびハング)します。
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...
...そしてドッカーコンテナのログに私が読んだ:
0.0.0.0に接続できませんでした:4200
私は何をすべきか? (私の目標は、PyCharmにブレークポイントを追加し、それをデバッグするためにdocker containerアプリの実行を停止できるようにすることです)
リモートインタープリターを使用すると、一度にいくつかの問題が解決します。私はすでにここで答えました Docker開発環境のリッチエディター
リモートにpython SDKをIDEに追加します。これにより、リモートでインストールされるすべてのライブラリも解決されます。これを行うにはSSH接続が必要です。私の答えで概説したキー。
これでもう少し手間がかかりますが、リモートポート接続を行うだけで、まだ遭遇しておらず見つけられる他のセクションでも、はるかに良い結果が得られます。
それでもポートベースのデバッグを使用したい場合は、 Docker:MacOSX Expose Container ports to Host machine を参照してください-これは、アタッチとリッスン部分を理解する方法を説明します。
使用する Host.docker.internal
の代わりに 0.0.0.0
。これにより、Dockerが使用するIPを決定できます。
たぶん、あなたはあなたのpycharmである自己ホストマシンに接続する必要があります。自己IPアドレスの代わりに0.0.0.0ではありません