bash - 将参数传递给 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}
解决方案
ARG
不是ENV
。ARG
正在接受 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}
推荐阅读
- mysql - 用户代理和 IP 地址哈希作为 Mysql 中的主键加入
- quickfixj - 通过 QuickFIX/J 使用自己的 TCP 层实现
- kubernetes - Minio Tenant 只是停留在“等待 Pod 准备就绪”,但 pod 的状态是 Running
- loops - 如果值存在,则循环它
- firebase - 如何在颤振消息中添加 RSA 加密?
- javascript - 如何使用来自 Java 的等效代码将具有 BigInt MD5 Hash 的 MD5 转换为 NodeJs 中的字符串格式
- javascript - vscode运行js时弹出错误信息
- git - 尽管使用了 sudo,但在安装 git 时出现错误
- r - R警告要替换的项目数不是替换长度的倍数
- puppeteer - Puppeteer:page.type() 错过了字符串的前几个字符