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






