web-dev-qa-db-ja.com

dockerファイル内で環境変数を設定するにはどうすればよいですか?

私のdockerfileのCMDは次のとおりです:["python", "myproject/start_slide_server.py"]

ただし、これを機能させるには、PYTHONPATHmyprojectの親ディレクトリである/appに設定する必要があります。

Dockerプロセスを開始してCMDbashでオーバーライドすると、次のように実行できます

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つのイメージから次のイメージに変更されないため、dockerPYTHONPATHcommandレベルで定義したくありません。

どうすればこれを達成できますか?


ENVディレクティブを使用できます

ENV PYTHONPATH /app
1
Anthony Kong

パスでPYTHONPATHを上書きするのではなく、パスを追加してください。そうしないと、システムはインストールされたPythonパッケージを見つけられません。

  • オプション1: RUN export PYTHONPATH="$PYTHONPATH:/app"
  • オプション2:ENV PYTHONPATH="$PYTHONPATH:/app"
1
tashuhka