[AWS 서버 구성] ECS로 서버 구동 및 CI/CD 환경 구성하기 (2 - ECR, ALB)

steve·2023년 10월 26일
1

Cloud

목록 보기
3/6

목표

  • Docker image를 빌드하고 ECR(Elastic Container Registry)에 push 해본다
  • 로드 밸런서(ELB - Application)를 생성해본다

1. Docker Image 빌드하기 (Nestjs)

  • Nestjs 기본 프로젝트 생성하기
    nest new cicd
  • Dockerfile 생성 (Dockerfile should be located in your project’s root directory)
    FROM node:18.16-alpine AS builder
    WORKDIR /usr/src
    COPY package*.json ./
    RUN npm install
    COPY . .
    RUN npm run build
    FROM node:18.16-alpine
    WORKDIR /usr/src/app
    COPY --from=builder /usr/src/dist dist
    COPY --from=builder /usr/src/node_modules node_modules
    CMD ["node", "dist/main.js"]
  • Build Image and test running
    docker build -t stv-ecr:v1 . --build-arg NODE_ENV="dev"
    docker run --name stv-ecr -d -p 3000:3000 stv-ecr:v1
  • 정상적으로 서버 접속이 되는 경우, 이 Docker image를 ECR에서 사용할 것이다

2. ECR (Elastic Container Registry)

  • ECR Repository 생성은 기본 옵션대로 private으로 생성한다
  • 생성된 Repository 진입 후, 상단 View push commands 버튼을 눌러 Docker image를 push한다 (Docker image의 tag는 위에서 생성한대로 동일하게 입력해준다. 예) stv-ecr:v1)

예시:

docker build -t stv-ecr:v1 . --build-arg NODE_ENV="dev"
docker tag stv-ecr:v1 YOUR_ECR_ADDR.dkr.ecr.ap-northeast-2.amazonaws.com/stv-ecr
docker push YOUR_ECR_ADDR.dkr.ecr.ap-northeast-2.amazonaws.com/stv-ecr

3. ALB (Application Load Balancer)

  • EC2 > Load balancers에서 Application을 선택하고 아래에 부연 설명이 없는 부분은 기본 옵션대로 생성한다
  • 생성 시 반드시 VPC, Security Groups는 이전에 생성했던 것으로 설정
  • Listeners and routing 부분에 설정할 target group을 생성
  • target type은 인스턴스가 Fargate인 경우 IP addresses, EC2 서버인 경우 Instances로 선택
  • target group 생성시에도 마찬가지로 VPC는 동일한 VPC를 선택
  • target group 생성이 완료되면 ALB 생성 페이지로 다시 돌아와서 로드밸런서 생성을 마친다

0개의 댓글