CodeBuild のカスタム Docker イメージのサンプル
このサンプルでは、AWS CodeBuild とカスタム Docker ビルドイメージ (Docker ハブの docker:dind
) を使用して Docker イメージをビルドして実行します。
代わりに、Docker をサポートする CodeBuild に用意されているビルドイメージを使用して Docker イメージをビルドする方法については、「Docker サンプル」を参照してください。
このサンプルを実行すると、AWS アカウントに課金される場合があります。これには、CodeBuild の料金、および Amazon S3、AWS、CloudWatch Logs に関連する AWS KMS リソースとアクションの料金が含まれます。詳細については、「[g465]CodeBuild 料金表[/g465]」、「[g464]Amazon S3 料金表[/g464]」、「[g463]AWS Key Management Service 料金表[/g463]」、および「[g462]Amazon CloudWatch 料金表[/g462]」を参照してください。
サンプルの実行
このサンプルを実行するには
-
このトピックの「ディレクトリ構造」セクションと「ファイル」セクションの説明に従ってファイルを作成し、ファイルを S3 入力バケットにアップロードするか、AWS CodeCommit、GitHub、Bitbucket のいずれかのリポジトリにアップロードします。
重要
をアップロードしないでください。アップロードするのは、(root directory name)
内のファイルのみです。(root directory name)
S3 入力バケットを使用している場合は、ファイルを必ず ZIP ファイルに圧縮してから入力バケットにアップロードしてください。
を ZIP ファイルに追加しないでください。追加するのは、(root directory name)
内のファイルのみです。(root directory name)
-
「AWS CodeBuild の直接実行」の手順に従ってビルドプロジェクトを作成し、ビルドを実行して、関連するビルド情報を表示します。
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": true }, "serviceRole": "arn:aws:iam::account-ID
:role/role-name
", "encryptionKey": "arn:aws:kms:region-ID
:account-ID
:key/key-ID
" }注記 デフォルトでは、Docker コンテナはどのデバイスにもアクセスできません。権限モードは、ビルドプロジェクトの Docker コンテナにすべてのデバイスへのアクセスを許可します。詳細については、Docker Docs Web サイトの「Runtime Privilege and Linux Capabilities
」を参照してください。 -
ビルドの結果を表示するには、ビルドのログで文字列
Hello, World!
を探します。詳細については、「ビルドの詳細の表示」を参照してください。
ディレクトリ構造
このサンプルのディレクトリ構造は次のとおりとします。
(root directory name)
├── buildspec.yml
└── Dockerfile
ファイル
このサンプルで使用されているオペレーティングシステムの基本イメージは Ubuntu です。このサンプルで使用するファイルは以下のとおりです。buildspec ファイルで参照される OverlayFS ストレージドライバーの詳細については、Docker ウェブサイトの「Use the OverlayFS storage driver
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
で -t
引数を timeout
に追加します。
- 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"
関連リソース
AWS CodeBuild の開始方法については、「コンソールを使用した AWS CodeBuild の開始方法」を参照してください。
CodeBuild の問題のトラブルシューティングについては、「AWS CodeBuild のトラブルシューティング」を参照してください。
CodeBuild のクォータについては、「AWS CodeBuild のクォータ」を参照してください。