2016-05-20 11 views
1

内のプレースホルダを使用することができません私はこのDockerfile持っている:ドッカーENTRYPOINT

FROM java:8 
ARG HOST 
... 
... 
ENTRYPOINT java -DHOST=${HOST} -jar ./app.jar 

私は必要なビルド-argを渡しドッキングウィンドウのイメージ構築:私はイメージを実行したときしかし、docker build -t co/myprogram --build-arg=HOST=myhost.com .

を:docker run co/myprogramは私を得ますプレースホルダがHOST値を代用しなかったため、私のプログラムの例外です。 URLはhttp://myhost.com/action/getの代わりにhttp:///action/getのようです。

ENTRYPOINTにプレースホルダを使用する方法はありますか?

答えて

3

引数はENTRYPOINTを補間するために使用されていません。 あなたがしたいことを達成するには、ENV HOST $HOSTの行を追加することができます。 エントリポイントは、実行時に$ HOSTを使用しますが、buildtimeでは補間された値を使用しますが、変数はbuildtimeで設定されたデフォルト値で設定されますが、依然としてオーバーライド可能です。ここで

は一例です:

$ cat Dockerfile 
FROM busybox 
ARG what 
ENV what $what 
RUN echo ${what} > /tmp/${what} 
ENTRYPOINT cat /tmp/${what} 

$ docker run -ti $(docker build -q --build-arg=what=test .) 
test 
関連する問題