2017-10-09 11 views
0

Dockerfileで奇妙な動作があります。それは、私は、/ etc /テストファイルを表示する場合ドッカーファイルと環境変数

docker run -it --rm -e KEY=aaa -e VAL=bbb mytest 

:私はこのイメージを構築し、このようにそれを実行し

FROM ubuntu:14.04 

ENV KEY '' 
ENV VAL '' 

RUN echo "${KEY}:${VAL}" > /etc/test 

CMD [] 

:私はvaribalesそれがテキストは、環境から来るとファイルを書き込むようにしよう空です(存在しますが、空です)。ファイルを作成するときに環境変数が設定されていないようです。

は、ドッキングウィンドウのファイルRUN echo "${KEY}:${VAL}" > /etc/test

答えて

2

にコマンドをありがとうあなたはその時点でのenv変数が空であるため、docker build ...

を使用した画像はこのように、これは、論理的であるを構築ときに実行されます。 イメージを開始したときに実行されるCMDコマンドにcommadを移動する必要があります。

0

ドッキング・イメージを構築するときに、KEYとVALUEを引数として定義し、その値を設定できます。

FROM ubuntu:14.04 

ARG KEY 
ARG VAL 

RUN echo "${KEY}:${VAL}" > /etc/test 

CMD [] 

次に、あなたはこのように使用してイメージを構築することができます。

docker build --build-arg KEY=<value> --build-arg VAL=<value> . 

https://docs.docker.com/engine/reference/builder/#using-arg-variables

+0

うーん...これはあなたがキーと値のペアを持っている限り多くの画像を構築する必要があることを意味します。なぜなら私の場合... – Cabrinha

+0

1つのイメージを構築し、実行時にKEYとVALの値を変更したい場合は、スクリプトを作成してエントリポイントとして実行し、その値を環境変数としてドッカーに渡すことができますコンテナ。 –