2017-12-09 7 views
0

는 나는이 Dockerfile있어 :Docker가 env 변수를 올바르게 설정하지 못 했습니까?

FROM ubuntu:latest 

RUN apt-get update && apt-get install -y \ 
     curl \ 
     python3-dev \ 
     python3-setuptools \ 
     python3-pip 

RUN rm -rf /var/lib/apt/lists/* && \ 
     apt-get clean 

ADD . /usr/src/index-server 
WORKDIR /usr/src/index-server 

RUN pip3 install --upgrade pip 
RUN pip3 install -r requirements.txt 

EXPOSE 8000 

ENV LC_CTYPE=C.UTF-8 
ENV FLASK_APP=app_server.py 

CMD /usr/local/bin/flask run --host=0.0.0.0 

이 잘 구축합니다. 하지만 그것을 실행하려고하면 파이썬 오류가 발생합니다.이 오류는 로케일 값을 잘못 설정하도록 추적합니다.

내 호스트 시스템에서

에게 locale | grep -E 'LC_ALL|LC_CTYPE|LANG' 반환 :

LANG="en_US.UTF-8" 
LC_CTYPE="en_US.UTF-8" 
LC_ALL= 

하지만 난 고정 표시기 인스턴스 (docker run -t 657c402ec253 locale | grep -E 'LC_ALL|LC_CTYPE|LANG'), 나는이 수와 동일 할 때 :

LANG= 
LANGUAGE= 
LC_CTYPE="POSIX" 
LC_ALL= 

I가 고정 표시기의 -e 플래그를 사용하는 경우 env 변수를 설정하면 올바르게 작동합니다.

$ docker run -e LC_CTYPE=C.UTF-8 -t 657c402ec253 locale | grep -E 'LC_ALL|LC_CTYPE|LANG' 

LANG= 
LANGUAGE= 
LC_CTYPE=C.UTF-8 
LC_ALL= 

무슨 일 이니?

답변

1

도커 빌드 중 ENV 세트를 컨테이너에 사용할 수 없음 향후 컨테이너 용으로 ENV를 유지하려면 ARG 명령을 사용해야합니다.

그래서 이미지를 빌드하는 동안 인턴이 ENV 값으로 전달하는 ARG 값을 전달해야하며 컨테이너로 설정됩니다.

고정 표시기 파일에서이

ARG buildtime_variable = DEFAULT_VALUE를 추가합니다.

ENV env_var_name = $

buildtime_variable 그리고 구축이 명령을

고정 표시기를 실행 --build, 인수 buildtime_variable = a_value # 아래 링크 자세한 정보를 들어 [...]

따라 https://vsupalov.com/docker-build-time-env-values/