Привязки томов не обнаружены в Pycharm при развертывании скриптов через интерпретатор Docker

Привязки томов не обнаружены в Pycharm при развертывании скриптов через интерпретатор Docker

У меня настроено связывание томов, отображающее несколько разных путей к моему контейнеру Docker. У меня настроен плагин Docker в Pycharm Pro, а интерпретатор контейнера установлен как мой интерпретатор Python. Я могу развернуть свои скрипты Python с помощью интерпретатора Docker без каких-либо проблем (в плане пакетов и зависимостей, созданных в образе Docker).

Однако при развертывании скриптов и попытке доступа к файлам, хранящимся на моей локальной машине через привязки томов, он их не находит. Когда я открываю интерактивную отладочную оболочку в pycharm и запускаю os.path.exist, он возвращает True для родительских путей привязок томов (внутри контейнера), но возвращает False для любых файлов или каталогов, которые должны быть отображены там с моей локальной машины.

Это странно, поскольку привязки томов активны, я проверил это несколькими способами:

  1. Я вижу окно инструмента Pycharm Docker, в котором правильно перечислены привязки.

  2. При проверке из терминала я вижу, что сопоставленные файлы отображаются в контейнере.

  3. Я также могу открыть терминал в своем контейнере, запустить оболочку Python и выполнить os.path.exist — это также вернет True, подтверждая, что каталоги сопоставлены и находятся по путям, указанным мной в привязках томов.

Почему я не могу получить доступ к привязкам томов при развертывании скриптов Python через интерпретатор Docker Pycharm, хотя в остальном скрипты работают нормально?

Системная информация:

Версия Pycharm: Pycharm Professional 2019.1.2

Версия докера: 2.0.0.3

ОС локальной машины: macOS 10.13.4 High Sierra

ОС Docker: Ubuntu 16.04

решение1

Оказывается, плагин Docker для Pycharm не прикрепляется к существующим запущенным контейнерам, когда я развертываю скрипт (хотя в некотором смысле он имеет окно инструментов Docker, в котором перечислены запущенные контейнеры и показаны их привязки томов, как если бы они использовались для развертывания). Вместо этого он запускает новый контейнер из образа каждый раз, когда вы развертываете скрипт. Поэтому, если вы хотите привязывать тома к этим временным экземплярам контейнеров каждый раз, когда вы запускаете скрипт, вам нужно перейти в Run/Edit Configurations и задать для каждого скрипта привязки томов в разделе «Настройки контейнера Docker». Я не знал, что это привязки томов, используемые для развертывания, а не те, которые установлены в окне инструментов Docker на запущенном контейнере.

Связанный контент