2017-10-07 38 views
1

這個問題以前應該問過,但我找不到答案。我從我的終端使用泊塢窗運行Python腳本,如:如何讓docker從文件所在的目錄運行而不是/?

docker run --rm img_name -v local_path:docker_path python docker_path_to_script/script.py 

,當我從script.py打印在腳本認爲它是使用cmd它說:

/ 

這是沒有意義的(不確定這是什麼的官方名稱)。這導致問題,因爲我有script.py內的相對路徑。如何讓腳本從Docker中的正確位置運行?

+1

僅僅因爲你安裝一個卷,不會更改爲工作目錄。爲此,使用'-w'。 –

+0

另一方面,我的工具['scuba'](https://github.com/JonathonReinhart/scuba)可以很容易地完成這種事情。它透明地處理安裝,工作目錄和文件所有權。 'scuba --image img_name python script.py' –

回答

1

設置圖像默認WORKDIR建立

WORKDIR /docker_path 

設置WORKDIR with -w運行圖像時

docker run -w /docker_path IMAGE COMMAND 
+0

我發現令人困惑的是,我原則上可能將'COMMAND'作爲我的泊塢窗圖像中的任意python腳本。這是否意味着我總是有'-w/docker_path'和'COMMAND =/docker_path/script.py'匹配?它似乎重複,愚蠢和容易出錯。但是,如果這就是我認爲我迷戀它的原因...... –

+0

通常,腳本會處理它從何處啓動,因此不是使用相對路徑,而是從腳本的位置引用路徑。例如,在node.js中可以使用特殊變量'__dirname'。在Python中,我認爲相當於'__file__'。 – Matt

相關問題