AWS CI/CD 공부 노트②:CodeBuild로 Docker 이미지 빌드
8565 단어 ECRCodeCommitCodeBuildCICDcloud9
할 일
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 리포지토리로 푸시
Cloud9 만들기(만드는 방법은 생략)
여기 에서 샘플 가져오기
Cloud9-Terminal
$ https://github.com/cloudfish7/multi-stage-build-for-codebuild.git
CodeCommit 리포지토리 복제
Cloud9-Terminal
$ git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/multistage-test
$ cp ../multi-stage-build-for-codebuild/* ./ -r
파일 구조
Cloud9-Terminal
$ 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
편집version: 0.1
-> version: 0.2
로 한다 buildspec.yml
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 리포지토리로 푸시
Cloud9-Terminal
$ git add .
$ git commit -m "update"
$ git push origin master
4. CodeBuild 만들기
빌드 프로젝트
multistage-build
만들기 및 실행→ ECR 리포지토리에 Docker 이미지가 저장됨
4-1. 빌드 프로젝트 작성
품목
값
비고
프로젝트 이름
multistage-build
소스 프로파일러
AWS CodeCommit
리포지토리
multistage-test
참조 유형
브랜치
브랜치
마스터
환경 이미지
관리형 이미지
운영체제
우분투
런타임
표준
이미지
aws/codebuild/standard:4.0
환경 유형
리눅스
서비스 역할
새로운 서비스 역할
역할 이름
codebuild-nultistage-build-service-role
자동 생성
빌드 사양
buildspec 파일 사용
4-2.ECR 액세스 권한 추가
IAM 역할에 ECR 액세스 정책 추가
AmazonEC2ContainerRegistryPowerUse
추가4-3. 빌드 실행
CodeBuild 실행
성공하면 ECR에 이미지가 푸시됩니다.
여기까지 할 수 있으면 일단 성공
동작 확인
빌드한 Docker 이미지를 Cloud9에 가져와 Docker 컨테이너를 실행할 수 있는지 확인
Docker 컨테이너 실행
Cloud9-Terminal
$ aws ecr get-login --no-include-email --region ap-northeast-1
# -> 出力された長いコマンドをコピーして実行 -> Login Succeeded とでれば成功
ECR 리포지토리에서 Docker 이미지 가져 오기
Cloud9-Terminal
$ docker pull xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/multistage-ecr:latest
Docker 이미지가 있음
Cloud9-Terminal
$ 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
Cloud9-Terminal
$ 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)
Reference
이 문제에 관하여(AWS CI/CD 공부 노트②:CodeBuild로 Docker 이미지 빌드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/suo-takefumi/items/ac5baad9754def80eb46텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)