私は質問をする最初の人ではないようですが、これに対する明確な答えはありませんでした。
Python開発でdocker-composerでpdbを使用する方法は?
おじさんにDjango docker
について尋ねると、素晴らしいdocker-composerの例とチュートリアルが得られ、環境が機能しています-docker-compose up
を実行でき、開発環境は整っていますしかしPDBは機能していません(非常に悲しいです) 。
docker-compose run my-awesome-app python app.py 0.0.0.0:8000
を実行することで解決できますが、ホストから http://127.0.0.1:8000 を介してアプリケーションにアクセスできます(docker-compose up
でできます)。 run
を使用します。新しいコンテナは、dir_app_13
およびdir_db_4
のように作成されますが、これらはまったく望まないものです。
善意の人々は私を助けてください。
PS
この例ではpdb ++を使用し、 this Django example の基本的なdocker-compose.ymlを使用しています。また、私は実験しましたが、何も助けにならないようです。そして、Dockerfileポインティングをサポートしているdocker-composer 1.3.0rc3 を使用しています。
--service-portsオプションを使用してWebコンテナを実行してみてください:docker-compose run --service-ports web
次の手順を使用して、pythonスクリプトにpdbを接続します。
ステップ1. ymlファイルに以下を追加します
stdin_open: true
tty: true
これにより、インタラクティブモードが有効になり、stdinが接続されます。これは、-itモードと同等です。
ステップ2。
docker attach <generated_containerid>
これでpdbシェルを取得できます
私の経験まで、docker-compose up
コマンドは対話型のシェルを提供しませんが、STDOUTの印刷をデフォルトの読み取り専用シェルに開始します。
または、ログディレクトリを指定してマップした場合、docker-compose up
コマンドは接続されたシェルに何も出力しませんが、マップされたログに出力を送信します。そのため、コンテナは実行後に個別に接続する必要があります。
docker-compose up
を実行する場合、-d
を介して切り離しモードにし、経由でコンテナに接続します
docker exec -it your_container_name bash