热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RUN命令中的ARG替换不适用于Dockerfile

如何解决《RUN命令中的ARG替换不适用于Dockerfile》经验,为你挑选了2个好方法。

在我的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语句之后,所有ARGs 都将被收集并且不再可用。多阶段构建时要小心。



1> 小智..:

要注意的另一件事是,在所有FROM语句之后,所有ARGs 都将被收集并且不再可用。多阶段构建时要小心。


真棒!我只有一个小时的时间来找出为什么它无法在我的机器上运行

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


推荐阅读
author-avatar
dtd3795290
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有