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

问题描述 投票:0回答:1

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

为了使用该信息调用cmake,操作如下-我不确定这个迷宫是最简单的方法:

1。 hooks/build

这实际上是将变量传递给docker build(取自this example):

#!/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 in

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

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

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

docker dockerfile dockerhub git-revision
1个回答
0
投票

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

实际上,我想是这样的。

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

Docs

© www.soinside.com 2019 - 2024. All rights reserved.