云客户?
免费开始>
在MyJFrog >中升级
云有什么新>





概述

DockerBuild本机步骤执行一个构建,从Dockerfile生成Docker映像在一个GitRepo源存储库资源


在步骤配置中,必须提供名称(dockerFileName)和目录(dockerFileLocation)的Dockerfile属性要处理的命令码头工人建造命令,以及名称(dockerImageName)和标签(dockerImageTag)的结果图像。映像是在构建节点上构建的,关于映像的信息存储在运行状态中。

构建依赖于的Docker映像私有基础映像:

  1. 将基本映像定义为图像资源,autoPull设置为真正的
  2. 将Image资源指定为input2022世界杯阿根廷预选赛赛程Resources的DockerBuild步骤。

要在Docker映像中包含不属于GitRepo源存储库的工件:

  1. 定义一个文件规范资源,它指定要从Artifactory中包含的文件。
  2. 指定FileSpec资源为其中之一input2022世界杯阿根廷预选赛赛程Resources的DockerBuild步骤。


正确使用DockerBuild步骤

DockerBuild和DockerPush步骤必须分配给相同的affinityGroup共享状态。如果不这样做,DockerBuild的输出将对DockerPush不可用。有关使用的更多信息affinityGroup,请参阅在同一构建节点上运行多个步骤

Docker构建和推送快速入门

Docker构建和推送快速入门演示了使用DockerBuild和的管道的定义DockerPush构建一个Docker Image,将其推送到Artifactory,然后发布BuildInfo。

页面内容


YAML模式

DockerBuild原生步骤的YAML模式如下:

DockerBuild
管道:- name: 步骤:- name: 类型:DockerBuild配置:#继承所有的标签从bash;//www.si-fil.com/confluence/display/JFROG/Bash affinityGroup:  dockerFileLocation:  dockerFileName:  dockerImageName:  dockerImageTag:  dockerOptions:  integrations: - name:  # required inputResources: - name: 2022世界杯阿根廷预选赛赛程 # required, git存储库包含您的Dockerfile - name: <映像资源> #可选基础映像- name:  #可选执行:onStart:onSuccess: - echo "Job well done!" onFailure: - echo "uh oh, something went wrong" onComplete: #always - echo " cleanup up some stuff"

标签

的名字

标识步骤的字母数字字符串(允许使用下划线)。

类型

必须DockerBuild对于这个步骤类型。

配置

指定步骤执行环境的所有配置选择。该步骤继承Bash/PowerShell步骤配置标签,包括这些相关的标签:

标签

使用说明

必需的/可选
affinityGroup 必须指定与后续指定的相同的亲和关系组字符串DockerPush的一步。 可选
input2022世界杯阿根廷预选赛赛程Resources

必须指定:

  • 一个GitRepo资源(包含Dockerfile)

你还可以指定:

  • 一个或多个图像2022世界杯阿根廷预选赛赛程资源来提取构建中使用的基本映像或触发此构建。
  • 一个或多个文件规范2022世界杯阿根廷预选赛赛程资源,这些资源指定要在构建上下文中包括哪些文件。这些文件将自动复制到dockerFileLocation
必需的/可选


此外,这些标签可以定义为支持该步骤的本机操作:

从Bash派生的标记

所有本机步骤都派生自Bash的一步。这意味着所有步骤共享来自Bash的相同基本标记集,而本机步骤也有自己的附加标记,这些标记支持该步骤的特定功能。所以熟悉这个很重要Bash步骤定义,因为它是所有其他步骤定义的核心。

标签

使用说明

必需的/可选

dockerFileLocation

包含Dockerfile的目录,该目录是具有Docker构建配置的文件。该文件还用作Docker构建的上下文。提供的路径应该相对于输入GitRepo存储库的根。如果没有提供位置,默认是GitRepo存储库的根目录。 要求

dockerFileName

Dockerfile的名称。 要求

dockerImageName

要创建的Docker映像的名称。这可以使用环境变量设置,也可以使用参数触发运行。 要求

dockerImageTag

要创建的Docker映像的标记。这可以使用环境变量设置,也可以使用参数触发运行。 要求
dockerOptions

的附加选项码头工人建造命令。

可选

例子

下面的例子使用了一个GoLang Git存储库,它由一个名为GitRepo的资源表示gosvc_app来创建一个发布到Artifactory的Docker映像。他们假设Artifactory集成名为MyArtifactory已经创建,Artifactory实例有一个Docker存储库映射到docker.artprod.company

下面的资源声明支持这些示例。2022世界杯阿根廷预选赛赛程并非所有示例中都使用了这些资源。2022世界杯阿根廷预选赛赛程

2022世界杯阿根廷预选赛赛程

2022世界杯阿根廷预选赛赛程资源:#应用程序源存储库-名称:gosvc_app类型:GitRepo配置:gitProvider: myGithub路径:myuser/myrepo #替换为您的存储库名称分支:包括:master # Artifactory存储库中的Docker映像-名称:base_image类型:映像配置:registry: myArtifactory sourceRepository: Docker -local #替换为您的存储库名称imageName: docker.artprod.mycompany.com/baseimage imageTag:最新autoPull:true # Artifactory存储库中的文件-名称:icon_files类型:FileSpec配置:sourceArtifactory: myArtifactory模式:my-local-repo/all-my-images/ target: icons/

从源存储库构建Docker映像

这个例子在Artifactory中构建Docker镜像到Docker注册表。图像的标记被设置为管道的运行号。

管道:—name: demo_pipeline步骤:—name: bld_image类型:DockerBuild配置:dockerFileLocation:。dockerFileName: Dockerfile dockerImageName: docker.artprod.mycompany.com/gosvc #替换为您完全限定的Docker注册表/映像名称dockerImageTag: ${run_number} inputResources: - name: gosvc_app integratio2022世界杯阿根廷预选赛赛程ns: - name: MyArtifactory

使用dockerOptions构建Docker映像

的用法dockerOptions标记来设置build-argDocker命令的选项。一个名为build_number_env_variable动态设置为管道的运行号。本例假设Dockerfile命令中使用了环境变量。

管道:—name: demo_pipeline步骤:—name: bld_image类型:DockerBuild配置:dockerFileLocation:。dockerFileName: Dockerfile dockerImageName: docker.artprod.mycompany.com/gosvc #替换为您的完全合格的Docker注册表/映像名称dockerImageTag: ${run_number} dockerOptions:——build-arg build_number_env_variable=${run_number} inputResources: - name: gosvc_app integratio2022世界杯阿根廷预选赛赛程ns: - name: MyArtifactory

使用私有基映像构建Docker映像

本例构建了一个依赖于Artifactory Docker存储库中存储的私有基映像的Docker映像。

管道:—name: demo_pipeline步骤:—name: bld_image类型:DockerBuild配置:dockerFileLocation:。dockerFileName: Dockerfile dockerImageName: docker.artprod.mycompany.com/gosvc #替换为您的完全合格的Docker注册表/镜像名称dockerImageTag: ${run_number} inputResources: - name: gosvc_app - name: b2022世界杯阿根廷预选赛赛程ase_image integrations: - name: MyArtifactory

用当前路径之外的文件构建Docker映像

这个例子演示了如何构建一个包含当前路径之外的文件的Docker映像。它提取存储在Artifactory存储库中的图标文件,用于名为my-local-repo.假定Dockerfile有一个命令,该命令将包含文件/图标进入图像。

管道:—name: demo_pipeline步骤:—name: bld_image类型:DockerBuild配置:dockerFileLocation:。dockerFileName: Dockerfile dockerImageName: docker.artprod.mycompany.com/gosvc #替换为您的完全合格的Docker注册表/映像名称dockerImageTag: ${run_number} inputResources: - name: gosvc_app - name: i2022世界杯阿根廷预选赛赛程con_files integrations: - name: MyArtifactory

工作原理

当你使用DockerBuild管道中的本机步骤,它在后台执行以下功能:

  • cp(如果有一个FileSpec输入,将这些文件复制到克隆的GitRepo输入的根目录)
  • 码头工人建造
  • add_run_variables(添加几个变量,稍后在推送Docker映像或发布构建信息时使用)
  • Jfrog rt build-collect-env(收集稍后将作为构建信息的一部分发布的环境信息)
  • Add_run_files(保存收集到的构建信息)
  • 没有标签
版权所有©2022 JFrog Ltd.