CodeBuild のカスタム Docker イメージのサンプル - AWS CodeBuild

CodeBuild のカスタム Docker イメージのサンプル

このサンプルでは、AWS CodeBuild とカスタム Docker ビルドイメージ (Docker ハブの docker:dind) を使用して Docker イメージをビルドして実行します。

代わりに、Docker をサポートする CodeBuild に用意されているビルドイメージを使用して Docker イメージをビルドする方法については、「Docker サンプル」を参照してください。

重要

このサンプルを実行すると、AWS アカウントに課金される場合があります。これには、CodeBuild および Amazon S3、AWS KMS、CloudWatch Logs に関連する AWS リソースおよびアクションの料金が含まれます。詳細については、「CodeBuild 料金表」、「Amazon S3 料金表」、「AWS Key Management Service 料金表」、「Amazon CloudWatch 料金表」を参照してください。

サンプルの実行

このサンプルを実行するには

  1. このトピックの「ディレクトリ構造」セクションと「ファイル」セクションの説明に従ってファイルを作成し、ファイルを S3 入力バケットにアップロードするか、AWS CodeCommit、GitHub、Bitbucket のいずれかのリポジトリにアップロードします。

    重要

    (root directory name) をアップロードしないでください。アップロードするのは、(root directory name) 内のファイルのみです。

    S3 入力バケットを使用している場合は、ファイルを必ず ZIP ファイルに圧縮してから入力バケットにアップロードしてください。(root directory name) を ZIP ファイルに追加しないでください。追加するのは、(root directory name) 内のファイルのみです。

  2. 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」を参照してください。

  3. ビルド結果を表示するには、ビルドのログで文字列を探します。 Hello, World!。 詳細については、以下を参照してください。 ビルドの詳細の表示.

ディレクトリ構造

このサンプルのディレクトリ構造は次のとおりとします。

(root directory name) |-- buildspec.yml `-- Dockerfile

Files

このサンプルで使用されているオペレーティングシステムの基本イメージは 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"

関連リソース