适用于 的自定义映像示例中的 Docker CodeBuild - Amazon CodeBuild
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

适用于 的自定义映像示例中的 Docker CodeBuild

此示例通过使用 Amazon CodeBuild 和自定义 Docker 构建映像(Docker Hub 中的 docker:dind)来构建和运行 Docker 映像。

要了解如何使用由提供的构建映像构建 Docker 映像来构建 Docker 映像。 CodeBuild 而是使用 Docker 支持,请参阅我们的Docker 示例.

重要

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

运行示例

要运行此示例,请执行以下操作:

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

    重要

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

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

  2. 请按照 直接运行 Amazon CodeBuild 中的步骤创建构建项目、运行构建并查看相关构建信息。

    如果您使用 Amazon 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": true }, "serviceRole": "arn:aws:iam::account-ID:role/role-name", "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID" }
    注意

    默认情况下,Docker 容器不允许访问任何设备。特权模式将授予构建项目的 Docker 容器访问所有设备的权限。有关更多信息,请参阅 Docker 文档网站上的运行时权限和 Linux 功能

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

目录结构

此示例假定有这样一个目录结构。

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

文件

在此示例中使用的操作系统的基本映像是 Ubuntu。此示例将使用这些文件。有关构建规范文件中引用的 OverlayFS 存储驱动程序的更多信息,请参阅 Docker 网站上的使用 OverlayFS 存储驱动程序

buildspec.yml (在 (root directory name))

version: 0.2 phases: install: commands: - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 & - timeout 15 sh -c "until docker info; do echo .; sleep 1; done" pre_build: commands: - docker build -t helloworld . build: commands: - docker images - docker run helloworld echo "Hello, World!"
注意

如果基本操作系统是 Alpine Linux,请在 buildspec.yml 中向 timeout 添加 -t 参数:

- timeout -t 15 sh -c "until docker info; do echo .; sleep 1; done"

Dockerfile (在 (root directory name))

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

相关资源