将$ SOURCE_COMMIT传递给Docker Hub上的Dockerfile命令

我正在hub.docker.com上为服务构建docker映像。在编译期间,将源的提交哈希作为参数传递给CMake(以便可以将其嵌入版本信息中)。根据{{​​3}},提交哈希自动作为SOURCE_COMMIT环境变量提供。

为了使用该信息调用cmake,请按照以下步骤进行操作-我不确定这个迷宫是最简单的方法:

1。 hooks/build

这实际上是将变量传递给docker build(取自Advanced options for Autobuild and Autotest):

#!/bin/bash
docker build  --build-arg SOURCE_COMMIT=$SOURCE_COMMIT -f $DOCKERFILE_PATH -t $IMAGE_NAME .

2。 Dockerfile

使用这两行来获取值:

ARG SOURCE_COMMIT                  # get it from the --build-arg
ENV SOURCE_COMMIT $SOURCE_COMMIT   # set shell variable (of the same name)

最后被传递给cmake

RUN cmake -DGIT_REVISION_HASH=$SOURCE_COMMIT # and so on ...

总而言之,将构建器外壳的环境变量作为build参数传递,然后获取并分配给内部外壳环境变量,然后将其扩展并作为cmake参数传递。

我错过了什么吗?还是一定很复杂?

shong29 回答:将$ SOURCE_COMMIT传递给Docker Hub上的Dockerfile命令

这也是我一直都这样做的方式。我认为没有其他方法。

实际上,我认为它就是这种方式。

  

ARG指令定义了一个变量,用户可以在构建时使用--build-arg =标志使用docker build命令将其传递给构建器。如果用户指定了Dockerfile中未定义的构建参数,则该构建会输出警告。

Docs

本文链接:https://www.f2er.com/3026402.html

大家都在问