Ligações de volume não detectadas no Pycharm ao implantar scripts via interpretador Docker

Ligações de volume não detectadas no Pycharm ao implantar scripts via interpretador Docker

Eu tenho a ligação de volume configurada para mapear alguns caminhos diferentes para meu contêiner Docker. Eu tenho o plugin Docker configurado no Pycharm Pro e o interpretador do contêiner definido como meu interpretador Python. Posso implantar meus scripts python usando o interpretador docker sem nenhum problema (em termos de pacotes e dependências criadas na imagem do docker).

No entanto, ao implantar scripts e tentar acessar arquivos armazenados em minha máquina local por meio de ligações de volume, ele não os encontra. Quando abro um shell de depuração interativo no pycharm e executo os.path.exist, ele retorna True para os caminhos pai das ligações de volume (dentro do contêiner), mas retorna False para quaisquer arquivos ou diretórios que deveriam ser mapeados lá do meu máquina local.

Isso é estranho porque as ligações de volume estão ativas. Verifiquei isso de várias maneiras:

  1. Posso ver a janela da ferramenta Docker do Pycharm listando as ligações corretamente

  2. Posso ver os arquivos mapeados aparecendo no contêiner ao verificar no terminal.

  3. Também posso abrir um terminal em meu contêiner e iniciar o shell python e executar os.path.exist. Isso também retorna True, confirmando que os diretórios estão mapeados e encontrados nos caminhos que especifiquei em minhas ligações de volume.

Por que não consigo acessar minhas ligações de volume ao implantar scripts python por meio do interpretador Docker do Pycharm - mesmo que os scripts funcionem bem?

Informação do sistema:

Versão Pycharm: Pycharm Professional 2019.1.2

Versão do Docker: 2.0.0.3

SO da máquina local: macOS 10.13.4 High Sierra

SO Docker: Ubuntu 16.04

Responder1

Acontece que o plug-in Docker para Pycharm não se conecta a contêineres em execução existentes quando eu implanto um script (mesmo que de uma forma um tanto enganosa, ele tenha uma janela de ferramentas Docker que lista contêineres em execução e mostra suas ligações de volume como se fossem usadas para implantação ). Em vez disso, ele inicia um novo contêiner a partir da imagem sempre que você implanta um script. Portanto, se você deseja vincular volumes a essas instâncias de contêiner temporárias sempre que iniciar o script, será necessário navegar até Executar/Editar configurações e definir para cada script as ligações de volume, em 'Configurações do contêiner do Docker'. Eu não sabia que essas eram as ligações de volume usadas para implantação, em vez daquelas definidas na janela da ferramenta Docker no contêiner em execução.

informação relacionada