gpt4 book ai didi

docker - 将 $SOURCE_COMMIT 传递给 docker hub 上的 Dockerfile 命令

转载 作者:行者123 更新时间:2023-12-02 19:21:53 24 4
gpt4 key购买 nike

我正在为 hub.docker.com 上的服务构建 docker 镜像。在编译期间,源的提交哈希作为参数传递给 CMake(以便它可以嵌入到版本信息中)。根据 Advanced options for Autobuild and Autotest ,提交哈希自 Action 为 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
RUN cmake -DGIT_REVISION_HASH=$SOURCE_COMMIT # and so on ...

总之,builder shell 的环境变量作为 build 参数传递,然后获取并分配给内部 shell 环境变量,然后扩展并作为 cmake 参数传递。

我错过了什么还是必须这么复杂?

最佳答案

这也是我一直以来的做法。我不认为还有其他方法。

事实上,我认为它是这样设计的。

The ARG instruction defines a variable that users can pass at build-time to the builder with the docker build command using the --build-arg = flag. If a user specifies a build argument that was not defined in the Dockerfile, the build outputs a warning.



Docs

关于docker - 将 $SOURCE_COMMIT 传递给 docker hub 上的 Dockerfile 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59057978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com