运行命令中的ARGreplace不适用于Dockerfile

在我的Dockerfile中,我有以下几点:

ARG a-version RUN wget -q -O /tmp/alle.tar.gz http://someserver/server/$a-version/a-server-$a-version.tar.gz && \ mkdir /opt/apps/$a-version 

但是,当build立这个:

 --build-arg http_proxy=http://myproxy","--build-arg a-version=a","--build-arg b-version=b" 

Step 10/15 : RUN wget...在path中显示$a-version而不是replace值,构build失败。

我已经按照这里所示的说明,但必须缺less别的东西。

我的问题是,什么可能导致这个问题,我该如何解决呢?

不要在variables名称中使用。

尽pipe有variables值,但Docker构build将始终向您显示在Dockerfile中写下的行。

所以使用这个variables名称a_version

 ARG a_version 

看到这个例子:

Dockerfile:

 FROM alpine ARG a_version RUN echo $a_version 

build立:

 $ docker build . --build-arg a_version=1234 Sending build context to Docker daemon 2.048 kB Step 1/3 : FROM alpine ---> a41a7446062d Step 2/3 : ARG a_version ---> Running in c55e98cab494 ---> 53dedab7de75 Removing intermediate container c55e98cab494 Step 3/3 : RUN echo $a_version <<< note this << ---> Running in 56b8aeddf77b 1234 <<<< and this << ---> 89badadc1ccf Removing intermediate container 56b8aeddf77b Successfully built 89badadc1ccf