Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

CodeBuild の 'Docker イメージを Amazon ECR イメージリポジトリに公開' サンプル

フォーカスモード
CodeBuild の 'Docker イメージを Amazon ECR イメージリポジトリに公開' サンプル - AWS CodeBuild

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

このサンプルでは、Docker イメージをビルド出力として生成し、Docker イメージを Amazon Elastic Container Registry (Amazon ECR) イメージリポジトリにプッシュします。このサンプルを適応させて、Docker イメージを Docker Hub にプッシュすることができます。詳細については、「'Docker イメージを Amazon ECR に公開' サンプルを Docker Hub にプッシュするように変更」を参照してください。

カスタム Docker ビルドイメージ (Docker Hub の docker:dind) を使用して Docker イメージをビルドする方法については、「カスタム Docker イメージのサンプル」を参照してください。

このサンプルは、golang:1.12 を参照してテストされています。

このサンプルでは、新しいマルチステージの Docker ビルド機能を使用しています。この機能により、Docker イメージがビルド出力として生成されます。次に、Docker イメージがAmazon ECR イメージリポジトリにプッシュされます。マルチステージの Docker イメージビルドは、最終的な Docker イメージのサイズを縮小するのに役立ちます。詳細については、「Docker でのマルチステージビルドの使用」を参照してください。

重要

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

'Docker イメージを Amazon ECR に公開' サンプルを実行

Docker イメージを Amazon ECR に公開するサンプルを実行するには、次の手順に従います。このサンプルの詳細については、「CodeBuild の 'Docker イメージを Amazon ECR イメージリポジトリに公開' サンプル」を参照してください。

このサンプルを実行するには
  1. 使用する Amazon ECR にイメージリポジトリがすでにある場合は、ステップ 3 に進みます。それ以外の場合は、 AWS ルートアカウントまたは管理者ユーザーの代わりに ユーザーを使用して Amazon ECR を操作する場合は、このステートメント (### BEGIN ADDING STATEMENT HERE ###### END ADDING STATEMENT HERE ### の間) をユーザー (またはユーザーが関連付けられている IAM グループ) に追加します。 AWS ルートアカウントの使用はお勧めしません。このステートメントでは、Docker イメージを保存するための Amazon ECR リポジトリを作成できます。省略記号 (...) は、簡潔にするために使用され、ステートメントを追加する場所の特定に役立ちます。ステートメントを削除しないでください、また、これらの省略記号をポリシーに入力しないでください。詳細については、ユーザーガイドの「AWS Management Consoleでのインラインポリシーの使用」を参照してください。

    { "Statement": [ ### BEGIN ADDING STATEMENT HERE ### { "Action": [ "ecr:CreateRepository" ], "Resource": "*", "Effect": "Allow" }, ### END ADDING STATEMENT HERE ### ... ], "Version": "2012-10-17" }
    注記

    このポリシーを変更する IAM エンティティは、ポリシーを変更するために IAM のアクセス許可を持っている必要があります。

  2. Amazon ECR にイメージリポジトリを作成します。必ず、ビルド環境を作成してビルドを実行するのと同じ AWS リージョンにリポジトリを作成します。詳細については、Amazon ECR ユーザーガイドの「リポジトリの作成」を参照してください。このリポジトリの名前は、この手順で後ほど IMAGE_REPO_NAME 環境変数を使用して指定するリポジトリ名と一致させる必要があります。Amazon ECR リポジトリポリシーで、CodeBuild サービスの IAM ロールに、イメージをプッシュするアクセスが許可されていることを確認してください。

  3. このステートメント (### BEGIN ADDING STATEMENT HERE ###### END ADDING STATEMENT HERE ### の間) を AWS CodeBuild サービスロールにアタッチしたポリシーに追加します。このステートメントでは、Amazon ECR リポジトリに Docker イメージをアップロードすることを CodeBuild に許可します。省略記号 (...) は、簡潔にするために使用され、ステートメントを追加する場所の特定に役立ちます。ステートメントを削除しないでください、また、これらの省略記号をポリシーに入力しないでください。

    { "Statement": [ ### BEGIN ADDING STATEMENT HERE ### { "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:CompleteLayerUpload", "ecr:GetAuthorizationToken", "ecr:InitiateLayerUpload", "ecr:PutImage", "ecr:UploadLayerPart" ], "Resource": "*", "Effect": "Allow" }, ### END ADDING STATEMENT HERE ### ... ], "Version": "2012-10-17" }
    注記

    このポリシーを変更する IAM エンティティは、ポリシーを変更するために IAM のアクセス許可を持っている必要があります。

  4. このトピックの ディレクトリ構造および ファイルセクションで説明されているようにファイルを作成し、S3 入力バケット、または AWS CodeCommit、GitHub、または Bitbucket リポジトリにアップロードします。詳細については、「AWS CodePipeline ユーザーガイド」の「イメージ定義ファイルのリファレンス」を参照してください。

    重要

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

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

  5. ビルドプロジェクトを作成して、ビルドを実行し、ビルド情報を表示します。

    コンソールを使用してプロジェクトを作成する場合:

    1. [Operating system] で、[Ubuntu] を選択します。

    2. [ランタイム] で、[Standard (標準)] を選択します。

    3. [イメージ] で、[aws/codebuild/standard:5.0] を選択します。

    4. 次の環境変数を設定します。

      • AWS_DEFAULT_REGION (値は region-ID)

      • AWS_ACCOUNT_ID (値は account-ID)

      • IMAGE_TAG (最新の値)

      • IMAGE_REPO_NAME (値は Amazon-ECR-repo-name)

    を使用してビルドプロジェクト AWS CLI を作成する場合、create-projectコマンドへの JSON 形式の入力は次のようになります。(プレースホルダは独自の値に置き換えてください。)

    { "name": "sample-docker-project", "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/DockerSample.zip" }, "artifacts": { "type": "NO_ARTIFACTS" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:5.0", "computeType": "BUILD_GENERAL1_SMALL", "environmentVariables": [ { "name": "AWS_DEFAULT_REGION", "value": "region-ID" }, { "name": "AWS_ACCOUNT_ID", "value": "account-ID" }, { "name": "IMAGE_REPO_NAME", "value": "Amazon-ECR-repo-name" }, { "name": "IMAGE_TAG", "value": "latest" } ], }, "serviceRole": "arn:aws:iam::account-ID:role/role-name", "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID" }
  6. CodeBuild が Docker イメージをリポジトリに正常にプッシュしたことを確認します。

    1. Amazon ECR コンソール (https://console.aws.amazon.com/ecr/) を開きます。

    2. リポジトリ名を選択します。イメージは、[Image tag (イメージタグ)] 列に表示されています。

ディレクトリ構造

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

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

ファイル

このサンプルで使用するファイルは以下のとおりです。

buildspec.yml ( 内)(root directory name)

version: 0.2 phases: pre_build: commands: - echo Logging in to Amazon ECR... - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com build: commands: - echo Build started on `date` - echo Building the Docker image... - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG . - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG post_build: commands: - echo Build completed on `date` - echo Pushing the Docker image... - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG

Dockerfile ( 内)(root directory name)

FROM golang:1.12-alpine AS build #Install git RUN apk add --no-cache git #Get the hello world package from a GitHub repository RUN go get github.com/golang/example/hello WORKDIR /go/src/github.com/golang/example/hello # Build the project and send the output to /bin/HelloWorld RUN go build -o /bin/HelloWorld FROM golang:1.12-alpine #Copy the build's output binary from the previous build container COPY --from=build /bin/HelloWorld /bin/HelloWorld ENTRYPOINT ["/bin/HelloWorld"]
注記

CodeBuild はカスタムDocker イメージの「ENTRYPOINT」をオーバーライドします。

このページの内容

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.