2017-12-09 12 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 

それは罰金構築します。しかし、私はそれを実行しようとすると、私は誤ってロケールの値を設定するために追跡したPythonのエラーに遭遇します。私のホストマシン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')と同じことをしようとしたとき、私はこの取得:私はにドッキングウィンドウの-eフラグを使用する場合は

LANG= 
LANGUAGE= 
LC_CTYPE="POSIX" 
LC_ALL= 

を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

そしてリンク https://vsupalov.com/docker-build-time-env-values/

の下に以下の詳細な情報については

ドッキングウィンドウのビルド--build-argをbuildtime_variable = a_value#[...]

このコマンドを実行します

関連する問題