AWS CodeBuild + ECRでdocker buildの環境を作った

公開日:2018-12-14
最終更新:2018-12-14

手元にdockerが入ったいい感じの環境がなかったので、
AWS CodeBuild + ECRでdockerfileのbuild環境を作った
結構便利です。

用意するもの

・Github
・ECR
・CodeBuild

CodeBuild用のService Role作成

あらかじめ下記のポリシーをアタッチしたサービスロールを作成しておく

ご自身の環境に合わせてください

{  
    "Version": "2012-10-17",  
    "Statement": [  
        {  
            "Effect": "Allow",  
            "Resource": [  
                "arn:aws:logs:ap-northeast-1:xxxxxxxxxxxx:log-group:/aws/codebuild/[codebuild_project]",  
                "arn:aws:logs:ap-northeast-1:xxxxxxxxxxxx:log-group:/aws/codebuild/[codebuild_project]:*"  
            ],  
            "Action": [  
                "logs:CreateLogGroup",  
                "logs:CreateLogStream",  
                "logs:PutLogEvents"  
            ]  
        },  
        {  
            "Effect": "Allow",  
            "Resource": [  
                "arn:aws:s3:::codepipeline-ap-northeast-1-*"  
            ],  
            "Action": [  
                "s3:PutObject",  
                "s3:GetObject",  
                "s3:GetObjectVersion"  
            ]  
        },  
        {  
            "Action": [  
                "ecr:BatchCheckLayerAvailability",  
                "ecr:CompleteLayerUpload",  
                "ecr:GetAuthorizationToken",  
                "ecr:InitiateLayerUpload",  
                "ecr:PutImage",  
                "ecr:UploadLayerPart"  
            ],  
            "Resource": "*",  
            "Effect": "Allow"  
        }  
    ]  
}  

ECR作成

xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/[repository_name]  

CodeBuild プロジェクト作成

プロジェクトは以下の項目を埋めて作成する

ソース

プロジェクト名: sample_projecct
ソースプロバイダ: Github
リポジトリ: GitHubの個人用アクセストークンで接続する
GitHub リポジトリ: 「GitHubアカウントのレポジトリ」-> 選択

環境

環境イメージ: マネージド型イメージ
オペレーティングシステム: Ubuntu
ランタイム: Docker
ランタイムバージョン: 最新
サービスロール: 作成したサービスロールを選択

以下の環境変数を設定する
AWS_DEFAULT_REGION: ap-northeast-1  
AWS_ACCOUNT_ID: AWS_ID  
IMAGE_REPO_NAME: whiteray19-repo  
IMAGE_TAG: latest  

Buildspec

ビルド仕様: buildspecファイル

アーティファクト

タイプ: アーティファクトなし

Github Repository

少なくとも以下のファイルを用意する

・Dockerfile
・buildspec.yml

Dockerfile
「hello world」だけ出力する簡易的な内容にしました

FROM centos  

RUN echo "Hello World"  

buildspec.yml

version: 0.1  

phases:  
  pre_build:  
    commands:  
      - echo Logging in to Amazon ECR...  
      - aws --version  
      - $(aws ecr get-login --no-include-email --region $AWS_DEFAULT_REGION)  
  build:  
    commands:  
      - echo Build started on `date`  
      - echo Building the Docker image...  
      - docker build -t $IMAGE_REPO_NAME .  
      - 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  

ビルド実行

GUIからビルドの実行をして、docker imageを作成する。

感想

手元にwindowsしかなく、Docker環境作るのが手間だなと思っていましたが、
このSaasの組み合わせは、お手軽でよかった。

記事が少しでもいいなと思ったらクラップを送ってみよう!
10
+1
@Krjwuh1JmxFA4tb0の技術ブログ

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする