本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
自定义镜像示例中的 Docker CodeBuild
以下示例通过使用和自定义 Docker 构建映像(在 Docker Hub docker:dind
中)来构建 AWS CodeBuild 和运行 Docker 镜像。
要了解如何改用由 Docker 支持的构建镜像来 CodeBuild 构建 Docker 镜像,请参阅我们的。'将 Docker 镜像发布到亚马逊 ECR '示例
重要
运行此示例可能会导致您的 AWS 账户被扣款。其中包括与 Amazon S3 和 CloudWatch 日志相关的 AWS 资源和操作可能产生的费用。 CodeBuild AWS KMS有关更多信息,请参阅CodeBuild 定价
在自定义镜像示例中运行 Docker
使用以下过程在自定义镜像示例中运行 Docker。有关此示例的更多信息,请参阅自定义镜像示例中的 Docker CodeBuild。
在自定义镜像示例中运行 Docker
-
按照本主题目录结构和文件部分所述创建文件,然后将其上传到 S3 输入存储桶或 AWS CodeCommit GitHub、或 Bitbucket 存储库。
重要
请不要上传
,而只上传(root directory name)
中的文件。(root directory name)
如果您使用的是 S3 输入存储桶,请务必创建一个包含这些ZIP文件的文件,然后将其上传到输入存储桶。不要
添加到ZIP文件中,只添加里面的文件(root directory name)
。(root directory name)
-
创建构建项目,运行构建,并查看相关的构建信息。
如果您使用 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 不支持特权模式。 -
要查看构建结果,请在构建的日志中查找字符串
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"