首页 > 解决方案 > 将参数传递给 docker

问题描述

我正在尝试将参数传递给 docker。为此,我在 docker build 命令中使用了 build-arg。

echo "[INFO] Hadoop version is ${HDP_VERSION}"
docker build --no-cache=true --squash \
--build-arg HDP_VERSION=${HDP_VERSION} \

这是我的码头工人

ARG HDP_VERSION
FROM host:5000/runner-hadoop:${HDP_VERSION}
RUN echo "HDP_VERSION="${HDP_VERSION}
COPY oozie/${HDP_VERSION} ${PATH_UNIX_PROJECT}

第一行和第二行执行没有失败,但在那之后,我看到它HDP_VERSION实际上是空的。因此,在第 4 步,选择了错误的目录。

在此处输入图像描述

为什么会这样,你如何纠正它?

编辑

这是回声的结果

在此处输入图像描述

如果我使用,这就是我得到的

--build-arg HDP_VERSION=1 \

在此处输入图像描述

编辑2

如果我使用 ENV,就会发生这种情况。结果是一样的。

ENV HDP_VERSION=${HDP_VERSION}
RUN echo "HDP_VERSION="${HDP_VERSION}

在此处输入图像描述

标签: bashdockercontinuous-integration

解决方案


ARG不是ENVARG正在接受 docker 的参数,所以它对 docker 可见,ENV将变量导出到环境,所以它对RUN.

ARG HDP_VERSION
FROM host:5000/runner-hadoop:${HDP_VERSION}
ENV HDP_VERSION=${HDP_VERSION}
RUN echo "HDP_VERSION="${HDP_VERSION}
COPY oozie/${HDP_VERSION} ${PATH_UNIX_PROJECT}

推荐阅读