반응형
스파르타 데브캠프를 통해 하루하루 공부한 내용을 정리합니다.
NestJS
오늘의 계획 : github actions를 통해 git push 할 경우 ECR에 이미지 배포 ECS 새로운 이미지 배포
간단하게 .github/workflows 폴더에 yaml파일만 생성하여 push 하면 되었다.
많은 블로그들을 참고하여 yaml 파일을 만들었고, 사실 이곳저곳에서 배껴적은것이라 이 파일에 대한 내용들을 숙지하려고 했다.
name: Deploy to ECS
on:
push:
branches:
- main
jobs:
deploy:
name: Deploy to ECS
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: 'ap-northeast-2'
- name: Login to Amazon ECR
uses: aws-actions/amazon-ecr-login@v1
- name: Build, tag, and push image to Amazon ECR
run: |
docker build -t ${{ secrets.ECR_REPOSITORY }}:${{ secrets.IMAGE_TAG }} -f Dockerfile.prod .
docker push ${{ secrets.ECR_REPOSITORY }}:${{ secrets.IMAGE_TAG }}
- name: Fill in the new image ID in the Amazon ECS task definition
id: task-def
uses: aws-actions/amazon-ecs-render-task-definition@v1
with:
task-definition: .aws/task-definition.json
container-name: ${{ secrets.CONTAINER_NAME }}
image: ${{ secrets.ECR_REPOSITORY }}:${{ secrets.IMAGE_TAG }}
- name: Deploy Amazon ECS task definition
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
with:
service: ${{ secrets.ECS_SERVICE_NAME }}
cluster: ${{ secrets.ECS_CLUSTER_NAME }}
task-definition: ${{ steps.task-def.outputs.task-definition }}
- Checkout: GitHub 리포지토리의 코드를 체크아웃합니다. 이는 워크플로우가 실행되는 기반이 되는 코드를 가져오는 단계입니다.
- Configure AWS Credentials: AWS에 접근하기 위한 자격증명을 설정합니다. aws-access-key-id와 aws-secret-access-key는 GitHub Secrets에서 가져오며, 이러한 키는 AWS 리소스에 안전하게 접근할 수 있게 해 줍니다. aws-region은 리소스가 위치한 AWS 리전을 지정합니다.
- Login to Amazon ECR: Amazon Elastic Container Registry(ECR)에 로그인합니다. ECR은 Docker 이미지를 저장하기 위한 AWS의 Docker 컨테이너 레지스트리 서비스입니다. 이 단계는 후속 단계에서 ECR에 이미지를 푸시하기 위해 필요합니다.
- Build, tag, and push image to Amazon ECR: Dockerfile을 사용해 Docker 이미지를 빌드하고, ECR 리포지토리에 태그를 붙여 푸시합니다. 이미지 태그는 GitHub Secrets에서 가져온 값으로, 일반적으로 이미지 버전을 구분하기 위해 사용됩니다. -f Dockerfile.prod 옵션은 사용할 Dockerfile의 이름을 지정합니다.
- Fill in the new image ID in the Amazon ECS task definition: ECS 태스크 정의를 렌더링합니다. 태스크 정의는 ECS 서비스에서 실행할 컨테이너의 설정을 담고 있습니다. 이 단계에서는 새로 푸시된 Docker 이미지를 태스크 정의에 반영합니다.
- Deploy Amazon ECS task definition: 수정된 태스크 정의를 사용해 ECS 서비스를 업데이트합니다. 이는 새로운 이미지를 사용해 컨테이너를 실행하는 데 필요한 작업입니다. service와 cluster는 각각 업데이트할 ECS 서비스와 클러스터의 이름으로, GitHub Secrets에서 가져옵니다.
https://github.com/avo1032/devcamp
반응형
'Today I Learned > DevCamp' 카테고리의 다른 글
데브캠프 6일차 (0) | 2024.03.12 |
---|---|
20240309(토) (0) | 2024.03.10 |
데브캠프 5일차 (0) | 2024.03.09 |
데브캠프 4일차 (0) | 2024.03.08 |
데브캠프 3일차 (0) | 2024.03.07 |