Docker – 无法在入口点内使用占位符

我有这个Dockerfile:

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

我build立了docker镜像传递必要的build-arg: docker build -t co/myprogram --build-arg=HOST=myhost.com .

但是,当我运行的图像: docker run co/myprogram我得到我的程序中的exception,因为占位符没有替代HOST值。 该url看起来像http:/// action / get而不是http://myhost.com/action/get ..

有没有办法在入口处使用placehoders?

ARG不用于插入入口点。 要达到你想要做的,你可以添加一个ENV HOST $HOST 。 然后,入口点将在运行时使用$ HOST,而不是构build时的内插值,但是该variables将使用在构build时设置的默认值进行设置,但仍然可以覆盖。

这里是一个例子:

 $ 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 

不幸的是,它似乎是不可能的devise: https : //github.com/docker/docker/issues/18492