2017-06-26 57 views
1

我有一個正在運行gunicorn進程的docker映像,但每次運行時都會收到錯誤ImportError: No module named 'crm'。所以我正在關注this SO post來解決這個問題。在Ubuntu 16.04中設置PYTHONPATH以使Docker映像正常運行

然而,當我運行

ENTRYPOINT ["PYTHONPATH=`pwd`/..", "/usr/local/bin/gunicorn", "web_interface:app", "-w 4", "-t 90", "--log-level=debug", "-b 0.0.0.0:8000", "--reload"] 

集裝箱吐回

ERROR: for web Cannot start service web: oci runtime error: container_linux.go:247: starting container process caused "exec: \"PYTHONPATH=`pwd`/.. \": stat PYTHONPATH=`pwd`/.. : no such file or directory" 

任何想法,我怎麼可以運行PYTHONPATH命令?

我應該說,它在我的Mac上本地工作,但不在Ubuntu容器中。

我曾嘗試:

"PYTHONPATH= PWD /.."

"PYTHONPATH=$(pwd)/.."

"PYTHONPATH=$PWD/.."

回答

8

你應該使用ENV指令定義ENTRYPOINT之外的環境:

ENV PYTHONPATH /absolute/path/to/the/pythonpath/inside/the/container 
ENTRYPOINT ["/usr/local/bin/gunicorn", "web_interface:app", "-w 4", "-t 90", "--log-level=debug", "-b 0.0.0.0:8000", "--reload"] 
+0

太好了,我更喜歡這個答案。所以我可以使用'$ PWD/..'代替路徑名稱 –

+0

不確定'$ PWD',因爲它取決於當前的'WORKDIR'(https://docs.docker.com/engine/reference/建設者/#WORKDIR)。您正在構建一個映像,因此您可以控制路徑,無需與您的應用程序目錄相關。 – zigarn

0

因此,這似乎是工作

ENTRYPOINT ["/usr/local/bin/gunicorn", "--pythonpath=`$PWD`/..", "web_interface:app", "-w 4", "-t 90", "--log-level=debug", "-b 0.0.0.0:8000", "--reload"]