自定义镜像示例中的 Docker CodeBuild - AWS CodeBuild

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

自定义镜像示例中的 Docker CodeBuild

以下示例通过使用和自定义 Docker 构建映像(在 Docker Hub docker:dind 中)来构建 AWS CodeBuild 和运行 Docker 镜像。

要了解如何改用由 Docker 支持的构建镜像来 CodeBuild 构建 Docker 镜像,请参阅我们的。'将 Docker 镜像发布到亚马逊 ECR '示例

重要

运行此示例可能会导致您的 AWS 账户被扣款。其中包括与 Amazon S3 和 CloudWatch 日志相关的 AWS 资源和操作可能产生的费用。 CodeBuild AWS KMS有关更多信息,请参阅CodeBuild 定价Amazon S3 定价AWS Key Management Service 定价亚马逊 CloudWatch定价

在自定义镜像示例中运行 Docker

使用以下过程在自定义镜像示例中运行 Docker。有关此示例的更多信息,请参阅自定义镜像示例中的 Docker CodeBuild

在自定义镜像示例中运行 Docker
  1. 按照本主题目录结构文件部分所述创建文件,然后将其上传到 S3 输入存储桶或 AWS CodeCommit GitHub、或 Bitbucket 存储库。

    重要

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

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

  2. 创建构建项目,运行构建,并查看相关的构建信息。

    如果您使用 AWS CLI 来创建构建项目,则create-project命令的 JSON-格式输入可能与此类似。(请将占位符替换为您自己的值。)

    { "name": "sample-docker-custom-image-project", "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/DockerCustomImageSample.zip" }, "artifacts": { "type": "NO_ARTIFACTS" }, "environment": { "type": "LINUX_CONTAINER", "image": "docker:dind", "computeType": "BUILD_GENERAL1_SMALL", "privilegedMode": false }, "serviceRole": "arn:aws:iam::account-ID:role/role-name", "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID" }
    注意

    默认情况下,为非版本启用 Docker 守护程序。VPC如果你想使用 Docker 容器进行VPC构建,请参阅 Docker Docs 网站上的运行时权限和 Linux 功能并启用特权模式。此外,Windows 不支持特权模式。

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

目录结构

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

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

文件

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

buildspec.yml(在 (root directory name)

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

Dockerfile(在 (root directory name)

FROM maven:3.3.9-jdk-8 RUN echo "Hello World"