AWS CI/CD勉強メモ②:CodeBuildでDockerイメージをビルド
やること
Cloud9でデータを用意して
CodeCommitのリポジトリ
にpushして
CodeBuildのビルドプロジェクト
でビルドしてDockerイメージを作成して
ECR(Amazon Elastic Container Registry)のリポジトリ
にDockerイメージをpushする。
動作確認は、Cloud9でDockerコンテナを実行する
構成
今回つくる構成
参考
では、やっていく
1.ECRの作成
ECR リポジトリを作成します。
リポジトリmultistage-ecr
を作成する
2.CodeCommitの作成
CodeCommit リポジトリを作成する
リポジトリmultistage-ecr
を作成する
3.ビルド用リソースの作成
githubからサンプルを取得し、
Cloud9上でデータを更新し、
CodeCommitリポジトリにpushする
Cloud9を作る(作り方は省略)
ここからサンプル取得
$ https://github.com/cloudfish7/multi-stage-build-for-codebuild.git
CodeCommitリポジトリをクローン
$ git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/multistage-test
$ cp ../multi-stage-build-for-codebuild/* ./ -r
ファイル構造
$ pwd;find . | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--\1/;s/\/[^/|]*/| /g'
/home/ec2-user/environment/multistage-test
|--buildspec.yml
|--Dockerfile
|--pom.xml
|--src
| |--buildspec.yml
| |--Dockerfile
| |--hoge
| | |--Main.java
| |--pom.xml
取得したサンプルデータの buildspec.yml
を編集
- 更新箇所
- {REPO_NAME}, {tag}, {account_id} を実際の値に更新する
- 1行目を
version: 0.1
->version: 0.2
にする
version: 0.1
phases:
pre_build:
commands:
- $(aws ecr get-login --region ap-northeast-1 --no-include-email)
build:
commands:
- docker build -t {REPO_NAME}:{tag} .
- docker tag {REPO_NAME}:{tag} {account_id}.dkr.ecr.ap-northeast-1.amazonaws.com/{REPO_NAME}:{tag}
- docker push {account_id}.dkr.ecr.ap-northeast-1.amazonaws.com/{REPO_NAME}:{tag}
post_build:
commands:
codecommit のリポジトリにpushする
$ git add .
$ git commit -m "update"
$ git push origin master
4.CodeBuildの作成
ビルドプロジェクト multistage-build
を作成し、実行する
→ ECR リポジトリにDockerイメージが格納される
4-1.ビルドプロジェクト作成
項目 | 値 | 備考 |
---|---|---|
プロジェクト名 | multistage-build | |
ソースプロパイダ | AWS CodeCommit | |
リポジトリ | multistage-test | |
リファレンスタイプ | ブランチ | |
ブランチ | master | |
環境イメージ | マネージド型イメージ | |
オペレーティングシステム | Ubuntu | |
ランタイム | Standard | |
イメージ | aws/codebuild/standard:4.0 | |
環境タイプ | Linux | |
サービスロール | 新しいサービスロール | |
ロール名 | codebuild-nultistage-build-service-role | 自動作成 |
ビルド仕様 | buildspecファイルを使用する |
4-2.ECRアクセス権を追加
IAMロールにECRアクセスのポリシー追加
AmazonEC2ContainerRegistryPowerUse
を追加
4-3.ビルド実行
CodeBuildを実行
成功すると、ECRにイメージがプッシュされてる
ここまでできれば一応成功
動作確認
ビルドしたDockerイメージをCloud9上に持ってきて、Dockerコンテナ実行できることを確認する
Dockerコンテナを実行
$ aws ecr get-login --no-include-email --region ap-northeast-1
# -> 出力された長いコマンドをコピーして実行 -> Login Succeeded とでれば成功
ECR リポジトリからDockerイメージ取得
$ docker pull xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/multistage-ecr:latest
Dockerイメージがある
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/multistage-ecr latest 5bf8c20529d6 14 minutes ago 81.4MB
$ docker run xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/multistage-ecr:latest
# Dockerコンテナ実行できたか確認
$ docker ps -ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE
c53e6c6ef9e6 xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/multistage-ecr:latest "/bin/sh" 11 seconds ago Exited (0) 11 seconds ago hopeful_mendel 0B (virtual 81.4MB)
Author And Source
この問題について(AWS CI/CD勉強メモ②:CodeBuildでDockerイメージをビルド), 我々は、より多くの情報をここで見つけました https://qiita.com/suo-takefumi/items/ac5baad9754def80eb46著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .