AWS CodeBuild で Dockerイメージをビルドして、ECRに登録する

  • 投稿者:
  • 投稿カテゴリー:aws

AWS CodeBuildを使ってDockerイメージをビルドし、Amazon EC2 Container Registry(ECR)へpushするを試してみた。

ECRのリポジトリを作成する

※Cloud9にて操作している。

$ aws ecr create-repository --repository-name codebuild-docker

CodeCommitのリポジトリを作成する

$ aws codecommit create-repository --repository-name codebuild-docker
$ git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/codebuild-docker
$ git add -A
$ git commit -m "First Commit"
$ git push
...
 * [new branch]      master -> master

CodeBuildにてプロジェクトを作成する





codebuild-codebuild-docker-service-role へ 以下ポリシーを追加した。
・AWSCodeCommitReadOnly
・EC2InstanceProfileForImageBuilderECRContainerBuilds

Dockerfile,buildspec.ymlを作成して、コミットする

$ tree 
.
├── buildspec.yml
├── Dockerfile
├── html
│   └── index.html
└── README.md

$ cat buildspec.yml
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
      - IMAGE_TAG=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
  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

$ cat Dockerfile
FROM nginx
COPY ./html /usr/share/nginx/html/

$ git add -A
$ git commit -m "Add Docker files Commit"
$ git push
...
    d088a8e..c91e562  master -> master

ビルドを開始する

ECRに登録されていることが確認できた