web-dev-qa-db-ja.com

DockerコンテナでのPyCharmリモートデバッグ

Dockerコンテナで実行しているpython app(Flask)のリモートデバッグをセットアップする方法を見つけようとしています。具体的には、docker-compose、PyCharmプロフェッショナルを使用しています。そしてpython 3.5。これは私がこれまでにやったことです:

  • 「pycharm-debug-py3k.Egg」をプロジェクトフォルダーにコピーしました
  • 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アプリの実行を停止できるようにすることです)

18
daveoncode

リモートインタープリターを使用すると、一度にいくつかの問題が解決します。私はすでにここで答えました Docker開発環境のリッチエディター

リモートにpython SDKをIDEに追加します。これにより、リモートでインストールされるすべてのライブラリも解決されます。これを行うにはSSH接続が必要です。私の答えで概説したキー。

これでもう少し手間がかかりますが、リモートポート接続を行うだけで、まだ遭遇しておらず見つけられる他のセクションでも、はるかに良い結果が得られます。

それでもポートベースのデバッグを使用したい場合は、 Docker:MacOSX Expose Container ports to Host machine を参照してください-これは、アタッチとリッスン部分を理解する方法を説明します。

8
Eugen Mayer

使用する Host.docker.internal の代わりに 0.0.0.0。これにより、Dockerが使用するIPを決定できます。

3
Drew Rochon

たぶん、あなたはあなたのpycharmである自己ホストマシンに接続する必要があります。自己IPアドレスの代わりに0.0.0.0ではありません

0
Scott