ECS에 배포할 예정이기 때문에, 리소스와 IAM 정책 등 모든 부분을 다 적어준다.
containerDefinitions 부분에 도커 이미지가 올라갈 ECR 주소를 적어준다.
https://docs.aws.amazon.com/ko_kr/AmazonECR/latest/userguide/ECR_on_ECS.html
첫번째 action은 Code Build를 생성한다.
프로젝트 폴더에 있는 buildspec.yml 파일을 읽어서
도커 이미지화 시킨 후 ECR이나 Docker Hub에 푸시한다.
version: 0.2
phases:
build:
commands:
- echo "Building Docker image..."
- docker build -t myimage:latest .
- docker tag myimage:latest 123456789012.dkr.ecr.us-west-2.amazonaws.com/myimage:latest
- echo "Pushing Docker image to ECR..."
- $(aws ecr get-login --no-include-email --region us-west-2)
- docker push 123456789012.dkr.ecr.us-west-2.amazonaws.com/myimage:latest
두번째 액션으로 Code Deploy를 만든다.
프로젝트 폴더에 있는 appspec.yml 파일을 읽어서 배포를 시작한다.
version: 0.0
Resources:
- TaskDefinition:
Type: AWS::ECS::TaskDefinition
Properties:
TaskDefinitionArn: !Ref TaskDefinition
- Stack:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: https://s3.amazonaws.com/mybucket/cloudformation.yml
Parameters:
TaskDefinition: !Ref TaskDefinition