构建失败,报错“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的限制,短时间内拉取次数较多时将受限无法拉取,因此可能会造成构建失败。
处理方法
可首先制作基础依赖镜像,推送到容器镜像服务中,以供正式构建时获取。
- 新建构建任务。
- 进入“凤凰商城”项目,单击导航“持续交付 > 编译构建”。
- 单击“新建任务”,任务名称设置为“phoenix-prebuild”,源码源及仓库信息与预置任务“phoenix-sample-ci”保持一致,单击“下一步”。
- 选择“空白构建模板”,单击“确定”。
- 配置参数。
- 选择“参数设置”页签,单击“新建参数”。
- 输入名称“dockerorg”,在“默认值”中输入在swr服务中创建的组织名称。
- 选择“构建步骤”页签,配置构建步骤。
- 添加步骤“执行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
- 添加步骤“制作镜像并推送到swr仓库”,修改步骤显示名称为“制作postgres镜像并推送到swr仓库”,参照表1完成配置。
表1 postgres镜像配置 配置项
配置建议
组织
${dockerorg}
镜像名字
postgres
镜像标签
9.4
dockerfile路径
./dockerfile-postgres
- 添加步骤“制作镜像并推送到swr仓库”,修改步骤显示名称为“制作redis镜像并推送到swr仓库”,参照表2完成配置。
表2 redis镜像配置 配置项
配置建议
组织
${dockerorg}
镜像名字
redis
镜像标签
alpine
dockerfile路径
./dockerfile-redis
- 添加步骤“制作镜像并推送到swr仓库”,修改步骤显示名称为“制作node镜像并推送到swr仓库”,参照表3完成配置。
表3 node镜像配置 配置项
配置建议
组织
${dockerorg}
镜像名字
node
镜像标签
8.16-slim
dockerfile路径
./dockerfile-node
- 添加步骤“制作镜像并推送到swr仓库”,修改步骤显示名称为“制作python镜像并推送到swr仓库”,参照表4完成配置。
表4 python镜像配置 配置项
配置建议
组织
${dockerorg}
镜像名字
python
镜像标签
2.7-alpine
dockerfile路径
./dockerfile-python
- 添加步骤“制作镜像并推送到swr仓库”,修改步骤显示名称为“制作java镜像并推送到swr仓库”,参照表5完成配置。
表5 java镜像配置 配置项
配置建议
组织
${dockerorg}
镜像名字
java
镜像标签
openjdk-8-jdk-alpine
dockerfile路径
./dockerfile-java
- 添加步骤“执行shell命令”,删除命令框中的命令行,输入以下命令行。
- 生成基础镜像。
- 单击“保存并执行”,启动编译构建任务。
当页面中显示
时,表示任务执行成功。
如果构建时仍出现同样的报错信息,请参考相关操作设置镜像加速器。
- 进入swr控制台,在页面左侧导航选择“我的镜像”。
列表中可看到新增的5个镜像“java”、“python”、“node”、“redis”、“postgres”。
- 单击“保存并执行”,启动编译构建任务。
- 替换基础镜像源地址。
- 单击导航“代码 > 代码托管”,选择代码仓库“phoenix-sample”。
- 参照表6编辑代码文件中的基础镜像源地址。
表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)提供了镜像加速器功能,
- 登录swr控制台。
- 单击页面左侧导“镜像资源 > 镜像中心”,进入“镜像中心”页面。
- 单击“镜像加速器”,在弹框中找到加速器地址,复制“https://”之后的内容。
图2 镜像加速器
- 进入代码托管服务,修改代码中引用的镜像地址。
- 将文件“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
- 将文件“result/dockerfile”中第一行代码修改为以下内容,如所示。
- 进入编译构建服务,编辑任务“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
- 保存并执行构建任务。
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨