使用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作为基础镜像。
- 在编译构建首页,单击右上角,选择“自定义构建环境”。
- 进入“自定义构建环境”页面,单击“基于centos7包含各种常用工具的X86基础镜像”,即可获取该基础镜像对应的Dockerfile文件。
- 获取构建包路径。
Maven构建包名格式为:artifactId-version.packaging,构建包默认生成于“./target”目录。
- 使用第3步获取的构建包路径编写第2步下载的Dockerfile文件,在基础镜像中添加Maven构建包,添加如下命令:
COPY ./target/javaMavenDemo-1.0.jar /demo/app.jar
该命令表示将构建包复制到镜像的“demo”目录,并将构建包命名为app.jar。
- 编写完成后,将Dockerfile文件及制作镜像过程中需要的其他文件上传到代码仓库根目录,具体上传操作请参考上传代码至代码仓库。
操作步骤
- 选择 。
- 单击“新建任务”,进入配置“基本信息”页面,填写构建任务基本信息。
表1 基本信息 参数项
描述
任务名称
任务的名称。
归属项目
任务所属项目。
源码源
Repo:从代码托管拉取代码进行构建,请选择前提准备中创建的源码仓库及分支。
任务描述
对任务进行描述。
- 单击“下一步”,进入“构建模板”页面。
- 选择“Maven构建”模板,单击“下一步”。
- 添加“制作镜像并推送到SWR仓库”构建步骤。
“Maven构建”构建步骤参数保持默认即可,“制作镜像并推送到SWR仓库”构建步骤参数配置说明如下:
参数项
说明
步骤显示名称
构建步骤的名称,可自定义修改。
工具版本
选择工具版本,使用默认版本即可。
镜像仓库
编译构建服务已经默认给出了各区域对应的SWR仓库地址,用户无需更改。
说明:支持推送到用户自定义镜像仓库。
授权用户
当前用户。请确保当前用户对组织内所有镜像享有编辑或管理权限,详见授权管理。
组织
SWR仓库组织名,请填写准备工作中创建好的组织名。
镜像名字
制作完成后的镜像名称,可自定义。
镜像标签
用来标记镜像的版本,可自定义。通过“镜像名:标签”可以唯一指定镜像。
工作目录
docker build命令中的“上下文路径”参数,该路径是CodeArts Repo代码仓库根目录的相对路径。
上下文路径,指的是docker在构建镜像时,docker build命令将该路径下的所有内容打包给容器引擎帮助构建镜像。
Dockerfile路径
Dockerfile文件所在路径,请填写相对于工作目录的路径,如:工作目录为根目录, 且Dockerfile文件在根目录下,则此处填写为“./Dockerfile”。
添加构建元数据到镜像
将本次构建信息添加到镜像中,镜像制作完成后可以通过docker inspect命令查看镜像元数据。
- 配置完构建步骤,单击“新建”,开始执行构建任务。
- 执行成功后,进入容器镜像服务。
- 单击导航栏“我的镜像”,选择“制作镜像并推送到SWR仓库”构建步骤中填写的组织,即可查看刚构建并上传的镜像。