运行命令中的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