
# 拉取镜像失败导致构建失败
#### 问题现象
构建失败，报错信息为"制作Docker镜像失败"，报错日志如下。
- 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
  ```
  
- request canceled while waiting for connection
  ```
  Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
  ```
  
 
#### 原因分析
构建任务中使用的基础镜像源为DockerHub。由于DockerHub的限制，短时间内拉取次数较多时将受限无法拉取，因此可能会造成构建失败。
#### 处理方法
使用构建服务提供的镜像地址替换原DockerHub镜像地址。
1. 替换代码文件中的镜像地址。 
   1. 进入项目"凤凰商城"，单击导航"代码 \> 代码托管"，找到代码仓库"phoenix-sample"。
   
   2. 修改以下代码文件中引用的镜像地址。
      表1替换基础镜像源地址 
      | 路径与位置                        | 修改前内容                     | 修改后内容                                                             |
      |:---|:---|:---|
      | 文件"result/Dockerfile"第1行     | node:5.11.0-slim          | swr.cn-north-4.myhuaweicloud.com/codeci/node:5.11.0-slim          |
      | 文件"/vote/Dockerfile"第2行      | python:2.7-alpine         | swr.cn-north-4.myhuaweicloud.com/codeci/python:2.7-alpine         |
      | 文件"/worker/Dockerfile.j"第1行  | java:openjdk-8-jdk-alpine | swr.cn-north-4.myhuaweicloud.com/codeci/java:openjdk-8-jdk-alpine |
      | 文件"/worker/Dockerfile.j2"第1行 | java:openjdk-8-jdk-alpine | swr.cn-north-4.myhuaweicloud.com/codeci/java:openjdk-8-jdk-alpine |
         
      
   
   
   
   
2. 替换构建任务中的镜像地址。 
   1. 单击导航"持续交付 \> 编译构建"，找到任务"phoenix-sample-ci"。
   
   2. 单击图标![](https://support.huaweicloud.com/bestpractice-devcloud/zh-cn_image_0000002244649897.png)，选择"编辑"。
   
   3. 找到构建步骤"生成Postgres and Redis Dockerfile"，将命令行中的已有命令替换为以下命令。
      ```
      echo from swr.cn-north-4.myhuaweicloud.com/codeci/postgres:9.4 > Dockerfile-postgres
      echo from swr.cn-north-4.myhuaweicloud.com/codeci/redis:alpine > Dockerfile-redis
      ```
      
   
   
   
   
3. 单击"保存并执行"，等待执行结果。
 
