构建失败,报错“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完成配置。
- 添加步骤“制作镜像并推送到SWR仓库”,修改步骤显示名称为“制作Redis镜像并推送到SWR仓库”,参照表2完成配置。
- 添加步骤“制作镜像并推送到SWR仓库”,修改步骤显示名称为“制作Node镜像并推送到SWR仓库”,参照表3完成配置。
- 添加步骤“制作镜像并推送到SWR仓库”,修改步骤显示名称为“制作Python镜像并推送到SWR仓库”,参照表4完成配置。
- 添加步骤“制作镜像并推送到SWR仓库”,修改步骤显示名称为“制作Java镜像并推送到SWR仓库”,参照表5完成配置。
- 添加步骤“执行shell命令”,删除命令框中的命令行,输入以下命令行。
- 生成基础镜像。
- 单击“保存并执行”,启动编译构建任务。
如果构建时仍出现同样的报错信息,请参考相关操作设置镜像加速器。
- 进入SWR控制台,在页面左侧导航选择“我的镜像”。
- 单击“保存并执行”,启动编译构建任务。
- 替换基础镜像源地址。
- 单击导航“代码 > 代码托管”,选择代码仓库“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
完成以上操作步骤后,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
- 保存并执行构建任务。