设置自动构建
码头工人中心 (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.)