文档首页/ 编译构建 CodeArts Build/ 最佳实践/ 图形化构建/ 使用Dockerfile制作Docker镜像
更新时间:2024-04-17 GMT+08:00

使用Dockerfile制作Docker镜像

背景信息

编译构建默认提供大量构建步骤、模板等,如果已有模板无法满足用户的使用需求,如缺少必要的依赖包、工具等,用户可以根据实际需要自定义Docker镜像。通过手动编写Dockerfile文件的方式,加入项目需要的依赖和工具。

  • Dockerfile是由一系列命令和参数构成的脚本,从FROM命令开始,紧接着跟随各种方法、命令和参数。这些命令应用于基础镜像并最终创建一个新的镜像。它们简化了从头到尾的流程并极大的简化了部署工作。了解更多请参见Docker官网。
  • 编译构建提供四种基础镜像:基于centos7包含各种常用工具的X86、ARM基础镜像和基于ubuntu18包含各种常用工具的X86、ARM基础镜像,可基于该基础镜像制作Dockerfile文件。

本示例以Maven构建为例,为您具体介绍如何使用Dockerfile定制一个简单的容器镜像并推送到SWR仓库。

前提准备

  • 准备组织

    在制作镜像并推送到SWR仓库时,需要指定SWR组织名,请提前在容器镜像服务创建组织。组织的约束与限制参考容器镜像服务的约束与限制

  • 准备项目代码

    在代码托管服务基于Java Maven Demo模板创建代码仓库,请参见按模板新建仓库

  • 准备Dockerfile文件

    基于编译构建基础镜像制作Dockerfile文件,本例使用centos7作为基础镜像。

    1. 在编译构建首页,单击右上角,选择“自定义构建环境”。
    2. 进入“自定义构建环境”页面,单击“基于centos7包含各种常用工具的X86基础镜像”,即可获取该基础镜像对应的Dockerfile文件。
    3. 获取构建包路径。

      Maven构建包名格式为:artifactId-version.packaging,构建包默认生成于“./target”目录。

      1. 导航栏选择代码 > 代码托管
      2. 单击代码仓库名称,进入代码托管“代码”页。
      3. 查看代码仓库pom.xml文件坐标定义,如下图所示,则最终构建包路径为:./target/javaMavenDemo-1.0.jar。

    4. 使用第3步获取的构建包路径编写第2步下载的Dockerfile文件,在基础镜像中添加Maven构建包,添加如下命令:
      COPY ./target/javaMavenDemo-1.0.jar /demo/app.jar

      该命令表示将构建包复制到镜像的“demo”目录,并将构建包命名为app.jar。

    5. 编写完成后,将Dockerfile文件及制作镜像过程中需要的其他文件上传到代码仓库根目录,具体上传操作请参考上传代码至代码仓库

操作步骤

  1. 选择持续交付 > 编译构建
  2. 单击“新建任务”,进入配置“基本信息”页面,填写构建任务基本信息。

    表1 基本信息

    参数项

    描述

    任务名称

    任务的名称。

    归属项目

    任务所属项目。

    源码源

    Repo:从代码托管拉取代码进行构建,请选择前提准备中创建的源码仓库及分支。

    任务描述

    对任务进行描述。

  3. 单击“下一步”,进入“构建模板”页面。
  4. 选择“Maven构建”模板,单击“下一步”
  5. 添加“制作镜像并推送到SWR仓库”构建步骤。

    “Maven构建”构建步骤参数保持默认即可,“制作镜像并推送到SWR仓库”构建步骤参数配置说明如下:

    参数项

    说明

    步骤显示名称

    构建步骤的名称,可自定义修改。

    工具版本

    选择工具版本,使用默认版本即可。

    镜像仓库

    编译构建服务已经默认给出了各区域对应的SWR仓库地址,用户无需更改。

    说明:

    支持推送到用户自定义镜像仓库。

    授权用户

    当前用户。请确保当前用户对组织内所有镜像享有编辑或管理权限,详见授权管理

    组织

    SWR仓库组织名,请填写准备工作中创建好的组织名。

    镜像名字

    制作完成后的镜像名称,可自定义。

    镜像标签

    用来标记镜像的版本,可自定义。通过“镜像名:标签”可以唯一指定镜像。

    工作目录

    docker build命令中的“上下文路径”参数,该路径是CodeArts Repo代码仓库根目录的相对路径。

    上下文路径,指的是docker在构建镜像时,docker build命令将该路径下的所有内容打包给容器引擎帮助构建镜像。

    Dockerfile路径

    Dockerfile文件所在路径,请填写相对于工作目录的路径,如:工作目录为根目录, 且Dockerfile文件在根目录下,则此处填写为“./Dockerfile”。

    添加构建元数据到镜像

    将本次构建信息添加到镜像中,镜像制作完成后可以通过docker inspect命令查看镜像元数据。

  6. 配置完构建步骤,单击“新建”,开始执行构建任务。
  7. 执行成功后,进入容器镜像服务
  8. 单击导航栏“我的镜像”,选择“制作镜像并推送到SWR仓库”构建步骤中填写的组织,即可查看刚构建并上传的镜像。