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

도커 버전: 2.0.0.3

로컬 컴퓨터 OS: macOS 10.13.4 High Sierra

도커 OS: 우분투 16.04

답변1

스크립트를 배포할 때 Pycharm용 Docker 플러그인이 실행 중인 기존 컨테이너에 연결되지 않는 것으로 나타났습니다(다소 오해의 소지가 있지만 실행 중인 컨테이너를 나열하고 배포에 사용된 것처럼 볼륨 바인딩을 표시하는 Docker 도구 창이 있음에도 불구하고). ). 대신 스크립트를 배포할 때마다 이미지에서 새 컨테이너를 시작합니다. 따라서 스크립트를 시작할 때마다 이러한 임시 컨테이너 인스턴스에 볼륨을 바인딩하려면 구성 실행/편집으로 이동하여 'Docker 컨테이너 설정'에서 각 스크립트에 대한 볼륨 바인딩을 설정해야 합니다. 실행 중인 컨테이너의 Docker 도구 창에 설정된 볼륨 바인딩이 아니라 배포에 사용되는 볼륨 바인딩인지는 몰랐습니다.

관련 정보