2016-01-20 12 views
23

コマンドの結果にドッカーENV変数を設定することはできますか? ように:Dockerfile - コマンドの結果にENVを設定

ENV MY_VAR whoami 

私は「ルート」MY_VARは値を取得したいか

+0

がhttps://stackoverflow.com/questions/33201271/parse-a-variable-with-the-result-of-a-command-in-dockerfileを参照してください。 – akhmed

答えて

6

を返すものは何でもwhoamiは、私は同じ問題を持っていたし、dockerfileでRUNコマンドを使用して、関数の結果として環境変数を設定する方法を発見しました。

RUN bash -l -c 'echo export SECRET_KEY_BASE="$(openssl rand -hex 64)" >> /etc/bash.bashrc' 

と私のENV:

docker run -e SECRET_KEY_BASE="$(openssl rand -hex 64)" 

代わりに、それは私が好きDockerfile文字列への書き込み:私が実行したときと同じように変更することなく、一度だけのRailsアプリをSECRET_KEY_BASEを設定する必要があります例えば

bashのログイン後でもrootから利用可能な変数。 または

RUN /bin/bash -l -c 'echo export SECRET_KEY_BASE="$(openssl rand -hex 64)" > /etc/profile.d/docker_init.sh' 

それはCMDとENTRYPOINTで利用可能な変数、それはあなたがその前にいくつかの文字列を変更する場合にのみ層と変化として

ドッカーキャッシュを指令することがあります。

また、different waysを試して、環境変数を設定することもできます。

4

DarkSideFへの回答として、

Dockerfileの各行/コマンドは別のコンテナで実行されていることに注意してください。これは、単一のコンテナ内で実行される

RUN export bleah=$(hostname -f);echo $bleah; 

あなたはこのような何かを行うことができます。

関連する問題