Docker インタープリター経由でスクリプトをデプロイするときに、Pycharm でボリューム バインディングが検出されない

Docker インタープリター経由でスクリプトをデプロイするときに、Pycharm でボリューム バインディングが検出されない

Docker コンテナにいくつかの異なるパスをマッピングするボリューム バインディングを設定しました。Pycharm Pro に Docker プラグインを設定し、コンテナのインタープリターを Python インタープリターとして設定しました。docker インタープリターを使用して、問題なく Python スクリプトをデプロイできます (docker イメージで作成されたパッケージと依存関係に関して)。

しかし、スクリプトを展開し、ボリューム バインディングを介してローカル マシンに保存されているファイルにアクセスしようとすると、ファイルが見つかりません。pycharm で対話型デバッグ シェルを開いて os.path.exist を実行すると、ボリューム バインディングの親パス (コンテナー内) に対して True が返されますが、ローカル マシンからそこにマップされるはずのファイルまたはディレクトリに対しては False が返されます。

ボリューム バインディングがアクティブであるため、これは奇妙です。私は複数の方法でこれを確認しました。

  1. PycharmのDockerツールウィンドウにバインディングが正しくリストされているのがわかります

  2. ターミナルから確認すると、コンテナ内にマップされたファイルが表示されます。

  3. また、コンテナ内でターミナルを開き、Python シェルを起動して os.path.exist を実行すると、ボリューム バインディングで指定したパスの下にディレクトリがマップされ、見つかったことを確認する True が返されます。

Pycharm の Docker インタープリターを介して Python スクリプトをデプロイするときに、スクリプトがそれ以外では正常に実行されるにもかかわらず、ボリューム バインディングにアクセスできないのはなぜですか?

システムインフォメーション:

Pycharm バージョン: Pycharm Professional 2019.1.2

Docker バージョン: 2.0.0.3

ローカルマシンのOS: macOS 10.13.4 High Sierra

Docker OS: Ubuntu 16.04

答え1

Pycharm の Docker プラグインは、スクリプトをデプロイするときに既存の実行中のコンテナーに接続されないことがわかりました (やや誤解を招く方法ではありますが、実行中のコンテナーを一覧表示し、それらがデプロイに使用されているかのようにボリューム バインディングを表示する Docker ツール ウィンドウがあります)。代わりに、スクリプトをデプロイするたびにイメージから新しいコンテナーを起動します。したがって、スクリプトを起動するたびにこれらの一時的なコンテナー インスタンスにボリュームをバインドする場合は、[構成の実行/編集] に移動し、[Docker コンテナー設定] で各スクリプトのボリューム バインディングを設定する必要があります。これが、実行中のコンテナーの Docker ツール ウィンドウで設定されたボリューム バインディングではなく、デプロイに使用されるボリューム バインディングであることを知りませんでした。

関連情報