AWS ECR 생성하고 Docker 이미지 푸시하기

허창원·2024년 5월 6일
0
post-custom-banner

Dockerfile 작성

# 'node:21-alpine' 이미지를 기반으로 하는 빌드단계를 시작합니다. 
# 이 단계의 이름은 development라고 지정합니다.
FROM node:21-alpine AS development

# 빌드 시간동안 사용할 변수 'NODE_ENV'를 선언하고, 기본값으로 'development'를 설정합니다.
ARG NODE_ENV=development

# ARG로 설정된 'NODE_ENV' 값을 이미지내에서 실행되는 애플리케이션에 'development'로 환경설정합니다.
ENV NODE_ENV=${NODE_ENV}

# 이미지 내의 작업 디렉터리를 '/app'으로 설정합니다.
WORKDIR /app

# 로컬 컴퓨터 디렉터리 내에서 package.json, package-lock.json 파일을 /app 으로 복사합니다.
COPY package*.json ./

# package.json에 작성된 npm 패키지들을 설치합니다.
RUN npm install

# 로컬 컴퓨터에 있는 현재 디렉터리의 모든 파일을 /app으로 복사합니다.
COPY . .

# package.json에 정의된 build 스크립트를 실행해 애플리케이션을 빌드합니다.
RUN npm run build

# 새로운 빌드 단계를 시작하며, 이 단계는 'production'으로 이름을 지정합니다.
FROM node:21-alpine AS production

ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}

WORKDIR /app

# 'development' 빌드 단계에서 생성된 '/app/dist' 디렉터리를 현재 작업 '/app' 디렉터리에 복사합니다.
COPY --from=development /app/dist ./dist

COPY package*.json ./

# devDependencied를 제외하고, dependencied에 명시된 npm 패키지들만 설치합니다.
RUN npm install --only=production

# 컨테이너가 시작될 때 실행할 명령어를 지정합니다. node dist/main 명령어로 애플리케이션을 실행합니다.
CMD ["node","dist/main"]

이 프로젝트에서 개발용: .develop.env, 배포용: .production.env으로 환경변수를 2개로 구분하여 사용했기 때문에 NODE_ENV 변수를 다르게 지정했습니다.

ECR 생성하기

ECR은 도커의 이미지를 저장하는 저장소입니다.

AWS console의 ECR에 들어가서 시작하기를 클릭합니다.


사용할 레포지토리의 이름을 작성해주고 바로 생성해줍니다.

생성한 ECR에 Docker 이미지 업로드하는 것은 다음글에서 해보겠습니다.

AWS CLI

1. AWS CLI 설치

https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html

해당 링크에 가서 AWS CLI를 로컬 컴퓨터에 설치합니다.

2. 보안자격 증명 접속

우측 상단의 사용자이름을 클릭하고 보안 자격 증명을 클릭합니다.

3. 액세스 키 만들기 클릭

액세스 키란에서 액세스 키 만들기를 클릭합니다.

4. 루트 사용자 액세스키 만들기

IAM에서 사용자를 생성하여 해당 사용자만을 위한 액세스키를 생성할 수 있습니다. 이 프로젝트는 저만 사용하므로 root 계정으로 액세스키를 만들겠습니다.

5. 액세스 키, 비밀 액세스 키 기록

.csv 파일을 다운 받아 액세스키와 비밀 액세스 키를 잘 기록해두세요.

6. AWS CLI Configure

AWS Access Key ID에는 Access Key ID 붙여 넣으세요.
AWS Secret Access Key에는 Secret Access Key 붙여 넣으세요.
Default region name은 'ap-northeast-2' 작성하세요
Default output format은 Enter 치고 넘어갑니다.

ECR에 이미지 푸시하기

1. ECR 접속

생성한 ECR에 접속하여 우측 상단의 '푸시 명령 보기'를 클릭합니다.

macOS, Windows에 맞는 곳을 클릭하시고 아래 명령어를 차례대로 복사하여
프로젝트 루트 디렉터리의 터미널에서 실행합니다.

주의
ERROR: Cannot connect to the Docker daemon at unix:///Users/heo-changwon/.docker/run/docker.sock. Is the docker daemon running?

라는 에러가 발생한다면 docker를 켰는지 확인해주세요.

2. ECR에 이미지 저장 확인

ECR 레포지토리에 이미지가 저장된 것을 확인할 수 있습니다.

post-custom-banner

0개의 댓글