主机 Docker 部署

更新时间:
复制为 MD 格式

云效流水线具备Docker部署能力,最终部署的目标来源于流水线任务镜像构建产物,本文将主要介绍如何使用流水线构建镜像完成Docker 部署任务。

新建Docker 部署流水线

流水线Flow首页,单击新建流水线,选择模板Java · 测试、构建镜像创建。

  1. 流水线源阶段,单击添加流水线源,选择代码源类型Codeup,配置服务连接以及代码库相关参数。 在流水线编辑页面,单击左侧 添加流水线源,在右侧弹出的面板中选择 代码源 页签,然后选择 Codeup。配置服务连接、代码仓库(选择 springboot)、默认分支(选择 master),并开启 代码源触发 开关,单击 添加 完成流水线源配置。

  2. 构建镜像阶段,单击镜像构建并推送至ACR(个人版),选择已授权的服务连接ACR地域与仓库,指定标签Dockerfile 路径,示例请参见云效spring-boot示例dockerfile

    其中,标签可填写变量 ${DATETIME} 以自动生成时间戳,镜像缓存可选择远端缓存

配置 Docker 部署任务

新阶段,单击新的任务,通过 添加任务。

在任务选择面板左侧选择 部署 分类,然后选择 Docker部署(主机Docker部署)任务卡片。

  1. Docker 部署任务,选择一个已创建的主机组或选择新建主机组。在部署配置区域,将 执行用户 设置为 root,并在下方的 部署脚本 编辑区中编写 Docker 部署脚本(例如 docker run $image,其中 $image 为在脚本下方变量处定义的上游输出或自定义变量)。

    说明

    Docker部署主机需要您提前自行在机器上安装 Docker 软件。

  2. 配置Docker部署脚本。

    1. 当您所部署的镜像来自您的私有仓库时,需要提供登录授权信息,为了安全起见,您可以使用 Flow 提供的变量功能,在变量中设置 Docker 登录用户名DOCKER_USERNAME和密码DOCKER_PASSWORD。在目标流水线编辑页面,选择,单击新建变量,配置变量信息。

      配置变量时,将两个变量的私密开关设置为开启状态,使默认值以星号遮蔽显示。

    2. 在部署脚本中使用登录镜像仓库命令操作,echo ${DOCKER_PASSWORD} | docker login --username ${DOCKER_USERNAME} --password-stdin registry.cn-hangzhou.aliyuncs.com(镜像仓库地址根据您的项目实际情况输入)。接下来通过执行相关命令即可对私有仓库镜像进行操作。 如下是部署脚本中登录镜像仓库的操作命令。

      echo ${DOCKER_PASSWORD} | docker login --username ${DOCKER_USERNAME} --password-stdin registry.cn-hangzhou.aliyuncs.com
  3. 添加变量,分为如下两种类型:

    • 一种是上游输出变量,上游输出产物可以是阿里云镜像构建产物,也可以是自定义镜像构建产物。配置上游产物的变量image镜像地址。

    • 另一种可以配置自定义变量,在执行命令时变量会写入机器环境变量中,从而可以直接使用,例如部署脚本,添加自定义变量把appname赋值flow-example当作容器名称。在部署脚本中,第一行为登录镜像仓库命令:docker login --password=${DOCKER_PASSWORD} --username=${DOCKER_USERNAME} registry.cn-hangzhou.aliyuncs.com。在下方变量区域中,设置 image标签.$(DATETIME)appnameflow-example。部署策略中暂停方式选择第一批暂停,分批数量设为 2

    • 如下是部署脚本中一个典型的运行Docker容器命令。

      docker run -d --name ${appname} ${image}
  4. 配置部署策略,避免不稳定发布对用户的影响,保障业务交付的稳定。

运行并查看Docker部署详情

在运行流水线任务完成后,在阶段,单击部署详情,可查看具体批次与日志。部署详情页面显示部署任务状态为已完成,目标主机 10.0.0.26 状态为在线,对应实例 ID 为 i-bp13r1mbmowyr79fbi1m,实例名称为 with-flow-ecs。可在操作列单击日志查看部署日志。