本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
的自定义镜像示例中的 Docker CodeBuild
此示例通过使用 Amazon CodeBuild 和自定义 Docker 构建映像(Docker Hub 中的 docker:dind
)来构建和运行 Docker 映像。
要了解如何改用 Docker 支持提供的构建映像来构建 D CodeBuild ocker 镜像,请参阅我们的Docker 示例。
运行该示例可能会导致您的 Amazon 账户产生相关费用。其中包括与 Amazon S3、和 CloudWatch 日志相关的Amazon资源和操作可能产生的费用。 CodeBuild Amazon KMS有关更多信息,请参阅CodeBuild 定价
运行示例
要运行此示例,请执行以下操作:
-
按照本主题的 “目录结构” 和 “文件” 部分所述创建文件,然后将它们上传到 S3 输入存储桶或Amazon CodeCommit GitHub、或 Bitbucket 存储库。
重要 请不要上传
,而只上传(root directory name)
中的文件。(root directory name)
如果您使用的是 S3 输入存储桶,请务必创建一个包含文件的 ZIP 文件,然后将其上传到输入存储桶。请不要将
添加到 ZIP 文件中,而只添加(root directory name)
中的文件。(root directory name)
-
请按照 直接运行 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 功能
。 -
要查看构建结果,请在构建的日志中查找字符串
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"
相关资源
有关 Amazon CodeBuild 入门的信息,请参阅通过控制台开始使用 Amazon CodeBuild。
有关中问题排的更多信息 CodeBuild,请参阅故障排除 Amazon CodeBuild。
有关中的配额的信息 CodeBuild,请参阅Amazon CodeBuild 的配额。