본문 바로가기
Today I Learned/DevCamp

20240310(일)

by 아보_ 2024. 3. 11.
반응형
스파르타 데브캠프를 통해 하루하루 공부한 내용을 정리합니다.

 

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 }}

 

  1. Checkout: GitHub 리포지토리의 코드를 체크아웃합니다. 이는 워크플로우가 실행되는 기반이 되는 코드를 가져오는 단계입니다.
  2. Configure AWS Credentials: AWS에 접근하기 위한 자격증명을 설정합니다. aws-access-key-id와 aws-secret-access-key는 GitHub Secrets에서 가져오며, 이러한 키는 AWS 리소스에 안전하게 접근할 수 있게 해 줍니다. aws-region은 리소스가 위치한 AWS 리전을 지정합니다.
  3. Login to Amazon ECR: Amazon Elastic Container Registry(ECR)에 로그인합니다. ECR은 Docker 이미지를 저장하기 위한 AWS의 Docker 컨테이너 레지스트리 서비스입니다. 이 단계는 후속 단계에서 ECR에 이미지를 푸시하기 위해 필요합니다.
  4. Build, tag, and push image to Amazon ECR: Dockerfile을 사용해 Docker 이미지를 빌드하고, ECR 리포지토리에 태그를 붙여 푸시합니다. 이미지 태그는 GitHub Secrets에서 가져온 값으로, 일반적으로 이미지 버전을 구분하기 위해 사용됩니다. -f Dockerfile.prod 옵션은 사용할 Dockerfile의 이름을 지정합니다.
  5. Fill in the new image ID in the Amazon ECS task definition: ECS 태스크 정의를 렌더링합니다. 태스크 정의는 ECS 서비스에서 실행할 컨테이너의 설정을 담고 있습니다. 이 단계에서는 새로 푸시된 Docker 이미지를 태스크 정의에 반영합니다.
  6. Deploy Amazon ECS task definition: 수정된 태스크 정의를 사용해 ECS 서비스를 업데이트합니다. 이는 새로운 이미지를 사용해 컨테이너를 실행하는 데 필요한 작업입니다. service와 cluster는 각각 업데이트할 ECS 서비스와 클러스터의 이름으로, GitHub Secrets에서 가져옵니다.

 

 

https://github.com/avo1032/devcamp

 

GitHub - avo1032/devcamp

Contribute to avo1032/devcamp development by creating an account on GitHub.

github.com

 

반응형

'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