是否可以在 docker hub 的自动构建中添加环境变量?

2024-04-25

我想自动化我的构建过程,并且需要传递一个环境变量来运行Dockerfile。我想知道在 Dockerhub 中是否有任何方法可以做到这一点。我知道 docker cloud 有类似的东西,但我想知道 Dockerhub 中是否有这个功能,因为有--build-argscli 中用于正常构建的参数。


设置自动构建

码头工人中心 (https://hub.docker.com https://hub.docker.com) can 自动构建图像从外部存储库中的源代码,并将构建的映像自动推送到 Docker 存储库,该存储库将托管在您的 Docker Hub 存储库帐户下Eg: https://cloud.docker.com/u/binbash/repository/list https://cloud.docker.com/u/binbash/repository/list

当您设置自动构建(也称为autobuilds),您创建一个列表branches and tags您想要构建到 Docker 镜像中的内容。当您将代码推送到源代码分支时(目前仅GitHub / Bitbucket支持)对于列出的图像标签之一,推送使用webhook触发新的构建,生成 Docker 镜像。然后将构建的镜像推送到 Docker Hub 注册表。 详细实现步骤请参考https://docs.docker.com/docker-hub/builds/ https://docs.docker.com/docker-hub/builds/

构建的环境变量

您可以设置以下值环境变量(实际上它们被映射来构建 ARG 值 -docker build --build-arg- 仅在构建时使用 -https://docs.docker.com/engine/reference/commandline/build/#set-build-time-variables---build-arg https://docs.docker.com/engine/reference/commandline/build/#set-build-time-variables---build-arg).

不要与服务在运行时使用的环境值 ENV VARS 混淆(docker run --env MYVAR1=foo - https://docs.docker.com/v17.12/edge/engine/reference/commandline/run/#set-environment-variables--e-env-env-file https://docs.docker.com/v17.12/edge/engine/reference/commandline/run/#set-environment-variables--e-env-env-file)

当您配置自动构建时,从 Docker Hub UI 配置的这些环境变量将在构建过程中使用。添加您的build environment variables单击旁边的加号构建环境变量部分,然后输入变量名称和值。

当您从 Docker Hub UI 设置变量值时,您在中设置的命令可以使用它们挂钩文件 (这个非常重要并将在下面扩展),但它们被存储,以便只有对 Docker Hub 存储库具有管理员访问权限的用户才能看到它们的值。这意味着您可以使用它们安全地存储访问令牌或其他应保密的信息。

构建钩子示例(以实现 Docker Hub UI 环境变量)

从自动构建的 Web UI 添加变量使它们在hooks。在钩子中,您必须使用该值来设置自定义构建参数 using --build-arg。最后,您必须在您的内部使用这个自定义构建参数Dockerfile使用手动设置环境变量ENV命令或export.

Example:

说你想要一个环境变量TERRAFORM_VERSION='0.12.0-beta2'在您的构建环境中

Step 1.将其添加到自动构建的 Web UI 中的“构建环境变量”

Step 2.创建一个自定义构建钩子,即创建一个folder called hooks与您的目录位于同一目录中Dockerfile。在 hooks 文件夹中,创建一个名为build。这将创建自定义构建挂钩。 Docker 将使用它来构建您的映像。构建内容:

#!/bin/bash

docker build -t $IMAGE_NAME --build-arg TERRAFORM_VERSION=$TERRAFORM_VERSION .

NOTE: Here $TERRAFORM_VERSION来自网络用户界面。

Step3:在你的 Dockerfile 中

ARG TERRAFORM_VERSION
ENV TERRAFORM_VERSION $TERRAFORM_VERSION

NOTE: Here $TERRAFORM_VERSION来自 bash 脚本文件中的自定义构建参数build.

完整示例: https://github.com/binbahar/public-docker-images/tree/master/terraform-resources https://github.com/binbashar/public-docker-images/tree/master/terraform-resources

就是这样!现在应该可以了。也许在 Docker Hub 中将“构建环境变量”重命名为“自定义钩子环境变量”将有助于理解官方文档中的这个概念(https://docs.docker.com/docker-hub/builds/advanced/ https://docs.docker.com/docker-hub/builds/advanced/).

加分!

在启动构建脚本时设置了许多关键环境参数,所有这些参数都可以在挂钩中使用,并且在制作自定义构建参数时都非常有用。

SOURCE_BRANCH: the name of the branch or the tag that is currently being tested.
SOURCE_COMMIT: the SHA1 hash of the commit being tested.
COMMIT_MSG: the message from the commit being tested and built.
DOCKER_REPO: the name of the Docker repository being built.
DOCKERFILE_PATH: the Dockerfile currently being built.
DOCKER_TAG: the Docker repository tag being built.
IMAGE_NAME: the name and tag of the Docker repository being built. (This variable is a combination of DOCKER_REPO:DOCKER_TAG.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在 docker hub 的自动构建中添加环境变量? 的相关文章

随机推荐