九游平台/ 软件开发生产线 codearts/ 最佳实践/ / / 构建失败,报错“too many requests”
更新时间:2024-07-12 gmt 08:00

构建失败,报错“too many requests”-九游平台

问题现象

构建失败,报错信息如下:

toomanyrequests: you have reached your pull rate limit. you may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit

原因分析

构建任务中使用的基础镜像源为dockerhub。由于dockerhub的限制,短时间内拉取次数较多时将受限无法拉取,因此可能会造成构建失败。

处理方法

可首先制作基础依赖镜像,推送到容器镜像服务中,以供正式构建时获取。

  1. 新建构建任务。
    1. 进入“凤凰商城”项目,单击导航“持续交付 > 编译构建”。
    2. 单击“新建任务”,任务名称设置为“phoenix-prebuild”,源码源及仓库信息与预置任务“phoenix-sample-ci”保持一致,单击“下一步”。
    3. 选择“空白构建模板”,单击“确定”。
  2. 配置参数。
    1. 选择“参数设置”页签,单击“新建参数”。
    2. 输入名称“dockerorg”,在“默认值”中输入在swr服务中创建的组织名称。
  3. 选择“构建步骤”页签,配置构建步骤。
    1. 添加步骤“执行shell命令”,删除命令框中的命令行,输入以下命令行。
      echo from postgres:9.4 > dockerfile-postgres
      echo from redis:alpine > dockerfile-redis
      echo from node:8.16-slim > dockerfile-node
      echo from python:2.7-alpine > dockerfile-python
      echo from java:openjdk-8-jdk-alpine > dockerfile-java
    2. 添加步骤“制作镜像并推送到swr仓库”,修改步骤显示名称为“制作postgres镜像并推送到swr仓库”,参照表1完成配置。
      表1 postgres镜像配置

      配置项

      配置建议

      组织

      ${dockerorg}

      镜像名字

      postgres

      镜像标签

      9.4

      dockerfile路径

      ./dockerfile-postgres

    3. 添加步骤“制作镜像并推送到swr仓库”,修改步骤显示名称为“制作redis镜像并推送到swr仓库”,参照表2完成配置。
      表2 redis镜像配置

      配置项

      配置建议

      组织

      ${dockerorg}

      镜像名字

      redis

      镜像标签

      alpine

      dockerfile路径

      ./dockerfile-redis

    4. 添加步骤“制作镜像并推送到swr仓库”,修改步骤显示名称为“制作node镜像并推送到swr仓库”,参照表3完成配置。
      表3 node镜像配置

      配置项

      配置建议

      组织

      ${dockerorg}

      镜像名字

      node

      镜像标签

      8.16-slim

      dockerfile路径

      ./dockerfile-node

    5. 添加步骤“制作镜像并推送到swr仓库”,修改步骤显示名称为“制作python镜像并推送到swr仓库”,参照表4完成配置。
      表4 python镜像配置

      配置项

      配置建议

      组织

      ${dockerorg}

      镜像名字

      python

      镜像标签

      2.7-alpine

      dockerfile路径

      ./dockerfile-python

    6. 添加步骤“制作镜像并推送到swr仓库”,修改步骤显示名称为“制作java镜像并推送到swr仓库”,参照表5完成配置。
      表5 java镜像配置

      配置项

      配置建议

      组织

      ${dockerorg}

      镜像名字

      java

      镜像标签

      openjdk-8-jdk-alpine

      dockerfile路径

      ./dockerfile-java

  4. 生成基础镜像。
    1. 单击“保存并执行”,启动编译构建任务。

      当页面中显示时,表示任务执行成功。

      如果构建时仍出现同样的报错信息,请参考相关操作设置镜像加速器。

    2. 进入swr控制台,在页面左侧导航选择“我的镜像”。

      列表中可看到新增的5个镜像“java”、“python”、“node”、“redis”、“postgres”。

  5. 替换基础镜像源地址。
    1. 单击导航“代码 > 代码托管”,选择代码仓库“phoenix-sample”。
    2. 参照表6编辑代码文件中的基础镜像源地址。

      表中的“${dockerserver}”、“${dockerorg}”仅为参数示例。实际替换镜像源地址时,请参照图1所示,将“${dockerserver}”在配置swr服务中记录的swr服务器地址,“${dockerorg}”替换为在配置swr服务中创建的组织。

      表6 替换基础镜像源地址

      路径与位置

      修改前内容

      修改后内容

      文件“result/dockerfile”第1行

      node:5.11.0-slim

      ${dockerserver}/${dockerorg}/node:8.16-slim

      文件“/vote/dockerfile”第2行

      python:2.7-alpine

      ${dockerserver}/${dockerorg}/python:2.7-alpine

      文件“/worker/dockerfile.j2”第1行

      java:openjdk-8-jdk-alpine

      ${dockerserver}/${dockerorg}/java:openjdk-8-jdk-alpine

      图1 替换基础镜像源地址

完成以上操作步骤后,postgres和redis镜像已制作完成,因此在编辑预置任务“phoenix-sample-ci”时,请禁用以下步骤:

  • 生成postgres and redis dockerfile
  • 制作postgres镜像并推送到swr仓库
  • 制作redis镜像并推送到swr仓库

相关操作

容器镜像服务(swr)提供了镜像加速器功能,

  1. 登录swr控制台。
  2. 单击页面左侧导“镜像资源 > 镜像中心”,进入“镜像中心”页面。
  3. 单击“镜像加速器”,在弹框中找到加速器地址,复制“https://”之后的内容。
    图2 镜像加速器
  4. 进入代码托管服务,修改代码中引用的镜像地址。
    • 将文件“result/dockerfile”中第一行代码修改为以下内容,如所示。
      from 加速器地址/library/node:8.16-slim
    • 将文件“/vote/dockerfile”中第二行代码修改为以下内容。
      from 加速器地址/library/python:2.7-alpine
    • 将文件“/worker/dockerfile.j2”中第一行代码修改为以下内容。
      from 加速器地址/library/java:openjdk-8-jdk-alpine
  5. 进入编译构建服务,编辑任务“phoenix-prebuild”。

    将步骤“执行shell命令”中的命令行修改为以下内容。

    echo from 加速器地址/library/postgres:9.4 > dockerfile-postgres
    echo from 加速器地址/library/redis:alpine > dockerfile-redis
    echo from 加速器地址/library/node:8.16-slim > dockerfile-node
    echo from 加速器地址/library/python:2.7-alpine > dockerfile-python
    echo from 加速器地址/library/java:openjdk-8-jdk-alpine > dockerfile-java
  6. 保存并执行构建任务。

相关文档

网站地图