

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將 'Publish Docker 映像修改為 Amazon ECR' 範例，以推送至 Docker Hub
<a name="sample-docker-docker-hub"></a>

若要將「公開 Docker 影像調整為 Amazon ECR」範例，以便將 Docker 影像推送至 Docker Hub，而不是 Amazon ECR，請編輯範例程式碼。如需範例的詳細資訊，請參閱 [CodeBuild 的「將 Docker 映像發佈至 Amazon ECR 映像儲存庫」範例](sample-docker.md)和 [執行「發佈 Docker 映像到 Amazon ECR」範例](sample-docker.md#sample-docker-running)。
**注意**  
如果您使用的是 17.06 之前的 Docker 版本，請移除 `--no-include-email` 選項。

1. 在 `buildspec.yml` 檔案中取代這些 Amazon ECR 特定的程式碼行：

   ```
   ...
     pre_build:
       commands:
         - echo Logging in to Amazon ECR...
         - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
     build:
       commands:
         - echo Build started on `date`
         - echo Building the Docker image...          
         - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
         - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
     post_build:
       commands:
         - echo Build completed on `date`
         - echo Pushing the Docker image...
         - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
   ...
   ```

   換成 Docker Hub 專用的這幾行程式碼：

   ```
   ...
     pre_build:
       commands:
         - echo Logging in to Docker Hub...
         # Type the command to log in to your Docker Hub account here.          
     build:
       commands:
         - echo Build started on `date`
         - echo Building the Docker image...
         - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
         - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $IMAGE_REPO_NAME:$IMAGE_TAG
     post_build:
       commands:
         - echo Build completed on `date`
         - echo Pushing the Docker image...
         - docker push $IMAGE_REPO_NAME:$IMAGE_TAG
   ...
   ```

1. 將編輯的程式碼上傳至 S3 輸入儲存貯體或 AWS CodeCommit、GitHub 或 Bitbucket 儲存庫。
**重要**  
請勿上傳 `(root directory name)`，僅上傳 `(root directory name)` 內的檔案即可。  
如果您使用的是 S3 輸入儲存貯體，請務必建立包含這些檔案的 ZIP 檔案，然後將其上傳至輸入儲存貯體。請勿將 `(root directory name)` 新增至 ZIP 檔案，僅新增 `(root directory name)` 內的檔案即可。

1. 將 `create-project` 命令中 JSON 格式輸入的這幾行程式碼：

   ```
   ...
       "environmentVariables": [
         {
           "name": "AWS_DEFAULT_REGION",
           "value": "region-ID"
         },
         {
           "name": "AWS_ACCOUNT_ID",
           "value": "account-ID"
         },
         {
           "name": "IMAGE_REPO_NAME",
           "value": "Amazon-ECR-repo-name"
         },
         {
           "name": "IMAGE_TAG",
           "value": "latest"
         }
       ]
   ...
   ```

   換成這幾行程式碼：

   ```
   ...
       "environmentVariables": [
         {
           "name": "IMAGE_REPO_NAME",
           "value": "your-Docker-Hub-repo-name"
         },
         {
           "name": "IMAGE_TAG",
           "value": "latest"
         }
       ]
   ...
   ```

1. 建立建置環境、執行建置，以及檢視相關的建置資訊。

1. 確認 AWS CodeBuild 已成功將 Docker 映像推送至儲存庫。登入 Docker Hub，移至儲存庫，然後選擇 **Tags (標籤)** 索引標籤。`latest` 標籤應該包含最近的 **Last Updated (上次更新)** 值。