让我们从例子开始。
我有一个简单的Dockerfile:

ARG arg1
ARG arg2
RUN echo "$arg1 $arg2"

以及我调用命令时的期望
docker build --build-arg arg1=abc --build-arg arg2=${arg1} .

是我得到了 abc abc 作为首发,但是我得到了 abc
那我想要的结果可能吗?我该如何实现呢?

最佳答案

Dockerfile执行此操作

FROM alpine
ARG arg1
ARG arg2
RUN

echo "$arg1 ${arg2:-$arg1}"

您现在可以这样称呼它:
docker build --build-arg arg1=abc --build-arg arg2= .
输出:
...truncated...
Step 4/4 : RUN echo "$arg1 ${arg2:-$arg1}"
 ---> Running in e65458b9ba6e
abc abc

或像这样:
docker build --build-arg arg1=abc --build-arg arg2=override .
输出:
...truncated...
Step 4/4 : RUN echo "$arg1 ${arg2:-$arg1}"
 ---> Running in e65458b9ba6e
abc override

(旧答案)

根据您提供的少量信息。我会说:
arg1=abc; docker build --build-arg arg1=$arg1 --build-arg arg2=$arg1

应该给你你想要的。

关于docker - 在docker build命令的--build-arg中嵌套参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48398983/

10-12 23:41