作者:dtd3795290 | 来源:互联网 | 2023-02-01 18:22
在我的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-arg http_proxy=http://myproxy","--build-arg a-version=a","--build-arg b-version=b"
Step 10/15 : RUN wget...
被示为具有$a-version
在路径中而不是取代的值和生成失败.
我已按照此处显示的说明操作,但必须遗漏其他内容.
我的问题是,什么可能导致这个问题,我该如何解决?
小智..
15
要注意的另一件事是,在所有FROM
语句之后,所有ARG
s 都将被收集并且不再可用。多阶段构建时要小心。
1> 小智..:
要注意的另一件事是,在所有FROM
语句之后,所有ARG
s 都将被收集并且不再可用。多阶段构建时要小心。
真棒!我只有一个小时的时间来找出为什么它无法在我的机器上运行
2> Robert..:
不要-
在变量名中使用.
Docker构建将始终显示Dockerfile中记录的行,尽管变量值.
所以使用这个变量名a_version
:
ARG a_version
看这个例子:
Dockerfile:
FROM alpine
ARG a_version
RUN echo $a_version
建立:
$ 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 << Running in 56b8aeddf77b
1234 <<< 89badadc1ccf
Removing intermediate container 56b8aeddf77b
Successfully built 89badadc1ccf