Como definir a variável de ambiente no arquivo docker?

1

O CMD do meu dockerfile é este: ["python", "myproject/start_slide_server.py"]

No entanto, para que isso funcione, preciso definir o PYTHONPATH to /app , que é o diretório pai de myproject

Se eu iniciar o processo de encaixe e substituir CMD por bash , posso executar o seguinte

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

E isso funciona como esperado

Agora adiciono a linha

RUN export PYTHONPATH=/app

antes

CMD ["python" , "myproject/start_slide_server.py"]

apenas falhou

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

Parece que a linha RUN não tem nenhum impacto

Eu realmente não quero definir ENV no nível de comando docker porque esse PYTHONPATH não será alterado de uma imagem para a próxima.

Como posso conseguir isso?

Eu posso usar a diretiva ENV

ENV PYTHONPATH /app
    
por Anthony Kong 17.08.2017 / 03:45

1 resposta

1

Você não deve sobrepor o PYTHONPATH ao seu caminho, mas anexá-lo; caso contrário, o sistema não encontrará os pacotes Python instalados.

  • Opção 1: RUN export PYTHONPATH="$PYTHONPATH:/app"
  • Opção 2: ENV PYTHONPATH="$PYTHONPATH:/app"
por 07.05.2018 / 15:07

Tags