适用于 CodeBuild 的 Docker 映像编译服务器 - Amazon CodeBuild
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

适用于 CodeBuild 的 Docker 映像编译服务器

以下示例将您的 Docker 构建卸载到托管式映像编译服务器。您可以调整此示例,以便在 CodeBuild 项目配置中预置专用的托管式 Docker 映像编译服务器。请注意,当项目的构建正在运行时,预置的实例处于活动状态,当构建未在运行时,实例将停止。预置的实例最多可存储一个月,然后被回收利用。有关更多信息,请参阅 CodeBuild Docker Server Capability

重要

运行该示例可能会导致您的 Amazon 账户产生相关费用。这包括 CodeBuild 可能产生的费用,以及与 Amazon S3、Amazon KMS 和 CloudWatch Logs 相关的 Amazon 资源和操作可能产生的费用。有关更多信息,请参阅 CodeBuild 定价Amazon S3 定价Amazon Key Management Service 定价Amazon CloudWatch 定价

配置 Docker 服务器

使用以下过程为管理 Docker 工作负载和存储 Docker 映像层的 CodeBuild 项目配置专用的计算环境。

配置 Docker 服务器
  1. 按照本主题的目录结构文件部分的说明创建文件,然后将其上传到 S3 输入存储桶或者上传到 Amazon CodeCommit、GitHub 或 Bitbucket 存储库。

    重要

    请不要上传 (root directory name),而只上传 (root directory name) 中的文件。

    如果您使用的是 S3 输入存储桶,请务必创建一个包含这些文件的 ZIP 文件,然后将其上传到输入存储桶。请不要将 (root directory name) 添加到 ZIP 文件中,而只添加 (root directory name) 中的文件。

  2. 创建构建项目、运行构建和查看相关构建信息:

    1. 在控制台的环境部分,选择其他配置,导航到 Docker 服务器配置,然后选择为此项目启用 Docker 服务器。然后,您可以选择 Docker 服务器计算类型并提供注册表凭证

    2. 如果您使用 Amazon 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 上传入。

  3. 要查看构建结果,请在构建的日志中查找字符串 Hello, World!。有关更多信息,请参阅 查看构建详细信息

目录结构

此示例采用以下目录结构。

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

文件

在此示例中使用的操作系统的基本映像是 Ubuntu。此示例将使用这些文件。

buildspec.yml(在 (root directory name)

version: 0.2 phases: build: commands: - docker buildx build . - docker run helloworld echo "Hello, World!"

Dockerfile(在 (root directory name)

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