构建镜像并推送到ACR

更新时间:2025-04-27 07:42:19

本文档是通过流水线Flow,实现从代码托管仓库到构建镜像并推送到ACR镜像仓库,执行的自动化流水线任务,使用以下示例演示操作步骤。

前提条件

步骤一:新建流水线

  1. 登录流水线Flow服务控制台,在控制台界面,请单击右侧上方新建流水线按钮

  2. 在弹出窗口中,根据需求选择合适的流水线模板,本文选择使用了空模板,单击创建按钮。

步骤二:配置代码源

  1. 选择新建的目标流水线,进入到流水线任务节点的操作页面。

  2. 选择任务节点按钮添加流水线源,单击代码源,选择示例代码源,选择JAVA语言,单击添加按钮,完成代码源流水线任务配置。Group@1x

    说明
    • 如果您选择的非示例代码源,请确保您的代码仓库已创建配置了构建镜像的Dockerfile指令文件。

    • 流水线源提供了多种代码源的托管仓库平台,如:自建GitLab、Codeup、GitHub等,可以根据您的需求选择。

步骤三:构建镜像并推送到ACR

  1. 配置流水线源任务后,添加镜像构建任务。

    说明
    • 建议选择镜像构建并推送至阿里云镜像仓库企业版,企业版支持多地域,提供稳定快速的镜像上传、下载服务。

    • 镜像构建并推送至阿里云镜像仓库个人版,是面向个人开发者,功能受限较多,不保障SLA(镜像网络加速性能),具体详情请参阅什么是容器镜像服务ACR

  2. 选择构建环境,配置镜像构建推送到ACR方式。

    指定容器环境/默认VM环境
    默认环境

    选择任务节点新的任务,选择导航菜单镜像构建 > 镜像构建并推送至ACR企业版

    选择任务节点空任务,在编辑面板中,单独添加任务步骤,构建 > 镜像构建并推送至阿里云镜像仓库企业版

  3. 在任务编辑面板中,配置参数。

    参数

    说明

    参数

    说明

    任务名称

    您可自定义任务名称,一般保持默认即可。

    构建集群

    支持以下构建集群:

    构建环境

    支持以下构建环境:

    • 指定容器环境(云效默认构建集群):流水线 Flow在构建机器上启动指定容器,在单容器环境进行构建。云效提供官方常用镜像供选择使用、您也可以指定自己的镜像作为运行环境。

    • 默认VM环境(仅私有构建集群支持):须选择指定构建节点流水线 Flow会直接在构建机器上安装环境并执行任务,为了提升任务构建速度建议提前在构建机器上安装好相应SDK和环境。

    • 默认环境(云效默认构建集群/私有构建集群):流水线 Flow会根据任务类型默认使用不同的容器镜像,预装相应的SDK和环境,默认镜像不可修改(Deprecated)。

    说明

    任务执行期间,流水线任务构建环境分配给用户使用,构建环境的使用权归属用户,任务执行脚本由用户自定义。

    下载流水线源

    开启下载流水线源后,您配置的源文件将会被下载至对应的工作目录下。支持以下三种方式:

    • 下载全部流水线源

    • 不下载流水线源

    • 下载部分流水线源

  4. 以下提供了企业版和个人版的任务配置参数,根据您的需求选择,完成任务参数设置。

    企业版配置
    个人版配置

    参数

    说明

    步骤名称

    自定义步骤名称。

    选择服务链接

    选择服务连接,如果没有则单击添加服务连接,设置服务授权/证书,单击新建按钮,进行访问ACR资源权限授权,单击创建

    地域

    根据容器镜像服务ACR目标实例的区域,选择相同的区域。

    企业实例

    选择容器镜像服务ACR企业版目标实例。

    命名空间

    选择目标ACR镜像仓库所属的命名空间。

    仓库

    选择目标ACR镜像仓库。

    标签

    设置动态参数${DATETIME},表示镜像被推送到ACR后,将会以当前日期时间作为版本名称。

    说明

    标签:支持固定参数例如1.0,或者动态参数例如${DATETIME}。

    Dockerfile路径

    本文示例代码源仓库中Dockerfile文件是在根目录下,保持默认路径即可。

    说明

    Dockerfile路径,默认路径是相对于代码库根目录所在路径,如META/config/DockerfileDockerfile。

    Group@1x

    重要
    • 由于Flow需要将构建的镜像推送到ACR仓库,需要ACR企业版目标实例开启镜像仓库公网进行通信,请设置ACR访问控制公网是开启状态,再将Flow构建集群公网出口地址,添加到ACR公网白名单里。

    • 查看Flow构建集群公网出口地址,在流水线Flow控制台界面导航菜单最下方,单击菜单全局设置,在全局设置页面导航菜单里单击构建集群管理,在构建集群管理页面,本文使用的云效默认构建集群下的云效北京构建集群,根据需求选择地区集群,将查看的公网出口地址添加到ACR访问控制白名单里。

    • 如果您使用私有构建集群,Flow是通过VPC地址推送ACR镜像仓库的,需要在任务编辑页面的任务步骤配置项里单击勾选使用 VPC 地址推送镜像,就无需开启ACR公网。添加私有构建集群,具体操作请参阅构建集群

    参数

    说明

    步骤名称

    自定义步骤名称。

    选择服务链接

    与企业版服务连接设置相同。

    地域

    根据容器镜像服务ACR目标实例的区域,选择相同的区域。

    仓库

    选择目标ACR镜像仓库。

    Dockerfile路径

    本文示例代码源仓库中Dockerfile文件是在根目录下,保持默认路径即可。

步骤四(可选):扩展

通过多个 Registry Login 镜像构建

根据上述步骤三,使用ACR企业版或者ACR个人版步骤,都是将docker login登录私有镜像仓库和docker build镜像构建两个步骤集成在一起,形成对应关系。如果场景是多个Registry私有镜像仓库,需要镜像构建并推送镜像,进行分开步骤配置,那么请参考以下示例。

A账号

用于构建目标镜像,FROM私有基础镜像仓库的账号。

B账号

用于构建目标镜像,PUSH私有镜像仓库的账号。

  1. 在任务步骤中,单击添加步骤,添加Java项目构建环境,安装 Java配置 MavenSettings 文件执行命令三个步骤。Group@1x (2)

  2. 添加任务步骤,单击添加步骤,选择构建 > Docker Login或者Docker Login ACR步骤,根据需求选择。

  3. 配置A账号和B账号Docker Login步骤,自定义设置步骤名称镜像仓库地址,单击添加服务连接,选择您的私有镜像仓库账号和密码或者新建,将目标私有镜像仓库服务授权于流水线 Flow服务访问。Group@1x

  4. 配置镜像构建并推送步骤。

    参数

    说明

    参数

    说明

    步骤名称

    自定义步骤名称。

    镜像地址

    镜像构建完成后,推送的目标镜像仓库地址。

    说明

    镜像地址的标签,根据需求可以使用固定或者动态标签${DATETIME}

    Dockerfile路径

    指定镜像构建的Dockerfile路径,填写源码仓库根目录下的相对路径。

    镜像缓存

    指定镜像缓存方式,支持 local 本地缓存(仅私有构建集群生效)、remote 远端缓存、no-cache 不使用缓存三种方式:

    • 本地缓存:仅在私有构建集群下生效,使用构建机本地缓存。

    • 远端缓存:使用 --cache-from--cache-to指定远端缓存镜像地址。不填则默认使用 <镜像 repo 地址>:flow-docker-build-cache 作为缓存地址。

    • 不使用缓存:公共构建集群无本地缓存,不使用缓存;私有构建集群使用--no-cache指定不使用缓存,每次构建重新拉取镜像层。

    Group@1x (1)

  5. 保存并运行流水线,查看日志。image

  6. 根据输出的日志,构建的镜像缓存推送到Registry私有镜像仓库中,在下一次运行流水线镜像构建时,就会基于这个缓存进行构建。image

    说明

    如果使用的是私有构建主机,推荐选择本地缓存选项,构建环境则需要选择默认VM环境,Docker构建会直接本地的docker deamon来进行构建,因此会使用本地缓存。

构建多架构镜像

  • 如果您需要镜像同时在amd64arm64等不同的芯片架构上使用,那么可以轻松的在云效上构建出来多架构的镜像。

  • 云效流水线 Flow 基于buildx提供多架构构建能力,需要添加一个参数--platform即可。

  • 在镜像构建并推送步骤中,配置选项更多构建参数,添加参数--platform linux/amd64,linux/arm64,保存运行并查看。Group@1x

步骤五:运行并查看日志

  1. 在流水线Flow控制台界面我的流水线列表,单击目标流水线右侧image运行按钮,选择目标流水线查看流水线任务节点界面。Group@1x (1)

  2. 在构建镜像任务节点,单击日志查看到流水线任务的步骤极及日志。Group@1x

  • 本页导读 (1)
  • 前提条件
  • 步骤一:新建流水线
  • 步骤二:配置代码源
  • 步骤三:构建镜像并推送到ACR
  • 步骤四(可选):扩展
  • 通过多个 Registry Login 镜像构建
  • 构建多架构镜像
  • 步骤五:运行并查看日志
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等