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