私のdockerfileのCMD
は次のとおりです:["python", "myproject/start_slide_server.py"]
ただし、これを機能させるには、PYTHONPATH
をmyproject
の親ディレクトリである/app
に設定する必要があります。
Dockerプロセスを開始してCMD
をbash
でオーバーライドすると、次のように実行できます
root@42e8998a8ff7:/app# export PYTHONPATH=.
root@42e8998a8ff7:/app# python myproject/start_slide_server.py
* Running on http://0.0.0.0:8090/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 236-035-556
そしてそれは期待通りに機能します
今、私は行を追加します
RUN export PYTHONPATH=/app
前
CMD ["python" , "myproject/start_slide_server.py"]
失敗した
Traceback (most recent call last):
File "/app/myproject/start_slide_server.py", line 23, in <module>
from myproject import env
ImportError: No module named myproject
RUN
行はまったく影響がないようです
このENV
は1つのイメージから次のイメージに変更されないため、docker
をPYTHONPATH
commandレベルで定義したくありません。
どうすればこれを達成できますか?
ENV
ディレクティブを使用できます
ENV PYTHONPATH /app
パスでPYTHONPATH
を上書きするのではなく、パスを追加してください。そうしないと、システムはインストールされたPythonパッケージを見つけられません。
RUN export PYTHONPATH="$PYTHONPATH:/app"
ENV PYTHONPATH="$PYTHONPATH:/app"