

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

# CodeBuild 的 Docker 映像建置伺服器範例
<a name="sample-docker-server"></a>

下列範例會將 Docker 組建卸載至受管映像組建伺服器。您可以調整此範例，在 CodeBuild 專案組態中佈建專用且受管的 Docker 映像建置伺服器。請注意，在為專案主動執行組建時，佈建的執行個體處於作用中狀態，而當組建未執行時，執行個體會停止。佈建的執行個體會在回收前儲存長達一個月。如需詳細資訊，請參閱 [ CodeBuild Docker 伺服器功能](https://aws.amazon.com/blogs//aws/accelerate-ci-cd-pipelines-with-the-new-aws-codebuild-docker-server-capability)。

**重要**  
執行此範例可能會導致 AWS 您的帳戶產生費用。這包括 CodeBuild 和與 Amazon S3 相關的 AWS 資源和動作 AWS KMS，以及 CloudWatch Logs 的可能費用。如需詳細資訊，請參閱 [CodeBuild 定價](https://aws.amazon.com/codebuild/pricing)、[Amazon S3 定價](https://aws.amazon.com/s3/pricing)、[AWS Key Management Service 定價](https://aws.amazon.com/kms/pricing)和 [Amazon CloudWatch 定價](https://aws.amazon.com/cloudwatch/pricing)。

**Topics**
+ [設定 Docker 伺服器](#sample-docker-server-running)

## 設定 Docker 伺服器
<a name="sample-docker-server-running"></a>

使用下列程序為管理 Docker 工作負載和存放 Docker 映像層的 CodeBuild 專案佈建專用運算環境。

**設定 Docker 伺服器**

1. 如本主題的 [目錄結構](#sample-docker-server-dir)和 [檔案](#sample-docker-server-files)章節所述建立檔案，然後將其上傳至 S3 輸入儲存貯體或 AWS CodeCommit、GitHub 或 Bitbucket 儲存庫。
**重要**  
請勿上傳 `{{(root directory name)}}`，僅上傳 `{{(root directory name)}}` 內的檔案即可。  
如果您使用的是 S3 輸入儲存貯體，請務必建立包含這些檔案的 ZIP 檔案，然後將其上傳至輸入儲存貯體。請勿將 `{{(root directory name)}}` 新增至 ZIP 檔案，僅新增 `{{(root directory name)}}` 內的檔案即可。

1. 建立組建專案、執行組建，以及檢視相關的組建資訊：

   1. 在主控台**的環境**區段中，選擇**其他組態**，導覽至 **Docker 伺服器組態**，然後選取**為此專案啟用 Docker 伺服器**。然後，您可以選擇 **Docker 伺服器運算類型**並提供**登錄檔登入**資料。

   1. 如果您使用 AWS CLI 來建立建置專案，`create-project`命令的 JSON 格式輸入可能會與此類似。(以您自己的值取代預留位置。)

      ```
      {
        "name": "sample-docker-custom-image-project",
        "source": {
          "type": "S3",
          "location": "codebuild-{{region-ID}}-{{account-ID}}-input-bucket/{{DockerServerSample}}.zip"
        },
        "artifacts": {
          "type": "NO_ARTIFACTS"
        },
        "environment": {
          "type": "LINUX_CONTAINER",
          "image": "aws/codebuild/amazonlinux-x86_64-standard:5.0",
          "computeType": "BUILD_GENERAL1_LARGE",
          "dockerServer": [ 
               { 
                  "computeType": "BUILD_GENERAL1_LARGE",
                  "securityGroupIds": [ "{{security-groups-ID}}" ]
               }
            ]
        },
        "serviceRole": "arn:aws:iam::{{account-ID}}:role/{{role-name}}"
      }
      ```
**注意**  
針對 Docker 伺服器設定的安全群組應允許從專案中設定的 VPC 傳入網路流量。它們應該允許連接埠 9876 上的輸入。

1. 若要查看組建結果，請在組建的日誌中尋找 `Hello, World!` 字串。如需詳細資訊，請參閱[檢視建置的詳細資訊](view-build-details.md)。

### 目錄結構
<a name="sample-docker-server-dir"></a>

此範例假設此目錄結構。

```
{{(root directory name)}}
├── buildspec.yml
└── Dockerfile
```

### 檔案
<a name="sample-docker-server-files"></a>

此範例中使用之作業系統的基本映像是 Ubuntu。此範例使用這些檔案。

`buildspec.yml` (在 `{{(root directory name)}}` 中)

```
version: 0.2

phases:
  build:
    commands:
      - docker buildx build -t helloworld --load .
      - docker run helloworld echo "Hello, World!"
```

`Dockerfile` (在 `{{(root directory name)}}` 中)

```
FROM public.ecr.aws/amazonlinux/amazonlinux:latest 
 
RUN echo "Hello World"
```