我設定了磁碟區綁定,將幾個不同的路徑對應到我的 Docker 容器。我在 Pycharm Pro 中設定了 Docker 插件,並將容器的解釋器設定為我的 Python 解釋器。我可以使用 docker 解釋器部署 python 腳本,沒有任何問題(就在 docker 映像上建立的套件和依賴項而言)。
但是,當部署腳本並嘗試透過磁碟區綁定存取本機電腦上儲存的檔案時,它找不到它們。當我在pycharm 中開啟互動式偵錯shell 並執行os.path.exist 時,它對於磁碟區綁定(在容器內)的父路徑返回True,但對於應該從我的映射到那裡的任何檔案或目錄返回False。
這很奇怪,因為卷綁定處於活動狀態,我已經通過多種方式驗證了這一點:
我可以看到 Pycharm 的 Docker 工具視窗正確列出了綁定
從終端檢查時,我可以看到容器中顯示的映射檔案。
我還可以在容器中打開一個終端,啟動 python shell 並運行 os.path.exist,這也會返回 True,確認目錄已映射並在我在卷綁定中指定的路徑下找到。
為什麼在透過 Pycharm 的 Docker 解釋器部署 python 腳本時無法存取我的磁碟區綁定 - 即使腳本運行良好?
系統資訊:
Pycharm版本:Pycharm Professional 2019.1.2
Docker版本:2.0.0.3
本機電腦作業系統:macOS 10.13.4 High Sierra
Docker 作業系統:Ubuntu 16.04
答案1
事實證明,當我部署腳本時,Pycharm 的Docker 插件不會附加到現有正在運行的容器(儘管它有一個Docker 工具窗口,列出正在運行的容器並顯示其捲綁定,這有點誤導性,就像用於部署一樣) )。相反,每次部署腳本時,它都會從映像啟動一個新容器。因此,如果您希望在每次啟動腳本時將磁碟區綁定到這些臨時容器實例,則需要導航至“運行/編輯配置”,並在“Docker 容器設定”下為每個腳本設定磁碟區綁定。我不知道這是用於部署的磁碟區綁定,而不是在正在運行的容器上的 Docker 工具視窗中設定的磁碟區綁定。